1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module harfbuzz.c.types; 26 27 public import gobject.c.types; 28 29 public alias hb_language_t = void*; 30 31 /** 32 * Data type for booleans. 33 */ 34 public alias int hb_bool_t; 35 36 /** 37 * Data type for holding Unicode codepoints. Also 38 * used to hold glyph IDs. 39 */ 40 public alias uint hb_codepoint_t; 41 42 /** 43 * Data type for holding color values. Colors are eight bits per 44 * channel RGB plus alpha transparency. 45 */ 46 public alias uint hb_color_t; 47 48 /** 49 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 50 * 51 * This method should retrieve the extents for a font, for horizontal-direction 52 * text segments. Extents must be returned in an #hb_glyph_extents output 53 * parameter. 54 */ 55 public alias hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; 56 57 /** 58 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 59 * 60 * This method should retrieve the extents for a font, for vertical-direction 61 * text segments. Extents must be returned in an #hb_glyph_extents output 62 * parameter. 63 */ 64 public alias hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; 65 66 /** 67 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 68 * 69 * This method should retrieve the advance for a specified glyph, in 70 * horizontal-direction text segments. Advances must be returned in 71 * an #hb_position_t output parameter. 72 */ 73 public alias hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t; 74 75 /** 76 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 77 * 78 * This method should retrieve the advances for a sequence of glyphs, in 79 * horizontal-direction text segments. 80 */ 81 public alias hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t; 82 83 /** 84 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 85 * 86 * This method should retrieve the kerning-adjustment value for a glyph-pair in 87 * the specified font, for horizontal text segments. 88 */ 89 public alias hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t; 90 91 /** 92 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 93 * 94 * This method should retrieve the (X,Y) coordinates (in font units) of the 95 * origin for a glyph, for horizontal-direction text segments. Each 96 * coordinate must be returned in an #hb_position_t output parameter. 97 */ 98 public alias hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t; 99 100 /** 101 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 102 * 103 * This method should retrieve the advance for a specified glyph, in 104 * vertical-direction text segments. Advances must be returned in 105 * an #hb_position_t output parameter. 106 */ 107 public alias hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t; 108 109 /** 110 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 111 * 112 * This method should retrieve the advances for a sequence of glyphs, in 113 * vertical-direction text segments. 114 */ 115 public alias hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t; 116 117 /** 118 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 119 * 120 * This method should retrieve the kerning-adjustment value for a glyph-pair in 121 * the specified font, for vertical text segments. 122 */ 123 public alias hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t; 124 125 /** 126 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 127 * 128 * This method should retrieve the (X,Y) coordinates (in font units) of the 129 * origin for a glyph, for vertical-direction text segments. Each coordinate 130 * must be returned in an #hb_position_t output parameter. 131 */ 132 public alias hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t; 133 134 /** 135 * Data type for bitmasks. 136 */ 137 public alias uint hb_mask_t; 138 139 /** 140 * An integral type representing an OpenType 'name' table name identifier. 141 * There are predefined name IDs, as well as name IDs return from other 142 * API. These can be used to fetch name strings from a font face. 143 * 144 * For more information on these fields, see the 145 * [OpenType spec](https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids). 146 */ 147 public alias uint hb_ot_name_id_t; 148 149 /** 150 * Data type for holding a single coordinate value. 151 * Contour points and other multi-dimensional data are 152 * stored as tuples of #hb_position_t's. 153 */ 154 public alias int hb_position_t; 155 156 /** 157 * Data type for tag identifiers. Tags are four 158 * byte integers, each byte representing a character. 159 * 160 * Tags are used to identify tables, design-variation axes, 161 * scripts, languages, font features, and baselines with 162 * human-readable names. 163 */ 164 public alias uint hb_tag_t; 165 166 /** 167 * The selectors defined for specifying AAT feature settings. 168 * 169 * Since: 2.2.0 170 */ 171 public enum hb_aat_layout_feature_selector_t 172 { 173 /** 174 * Initial, unset feature selector 175 */ 176 INVALID = 65535, 177 /** 178 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC 179 */ 180 ALL_TYPE_FEATURES_ON = 0, 181 /** 182 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALL_TYPOGRAPHIC 183 */ 184 ALL_TYPE_FEATURES_OFF = 1, 185 /** 186 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 187 */ 188 REQUIRED_LIGATURES_ON = 0, 189 /** 190 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 191 */ 192 REQUIRED_LIGATURES_OFF = 1, 193 /** 194 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 195 */ 196 COMMON_LIGATURES_ON = 2, 197 /** 198 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 199 */ 200 COMMON_LIGATURES_OFF = 3, 201 /** 202 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 203 */ 204 RARE_LIGATURES_ON = 4, 205 /** 206 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 207 */ 208 RARE_LIGATURES_OFF = 5, 209 /** 210 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 211 */ 212 LOGOS_ON = 6, 213 /** 214 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 215 */ 216 LOGOS_OFF = 7, 217 /** 218 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 219 */ 220 REBUS_PICTURES_ON = 8, 221 /** 222 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 223 */ 224 REBUS_PICTURES_OFF = 9, 225 /** 226 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 227 */ 228 DIPHTHONG_LIGATURES_ON = 10, 229 /** 230 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 231 */ 232 DIPHTHONG_LIGATURES_OFF = 11, 233 /** 234 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 235 */ 236 SQUARED_LIGATURES_ON = 12, 237 /** 238 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 239 */ 240 SQUARED_LIGATURES_OFF = 13, 241 /** 242 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 243 */ 244 ABBREV_SQUARED_LIGATURES_ON = 14, 245 /** 246 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 247 */ 248 ABBREV_SQUARED_LIGATURES_OFF = 15, 249 /** 250 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 251 */ 252 SYMBOL_LIGATURES_ON = 16, 253 /** 254 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 255 */ 256 SYMBOL_LIGATURES_OFF = 17, 257 /** 258 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 259 */ 260 CONTEXTUAL_LIGATURES_ON = 18, 261 /** 262 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 263 */ 264 CONTEXTUAL_LIGATURES_OFF = 19, 265 /** 266 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 267 */ 268 HISTORICAL_LIGATURES_ON = 20, 269 /** 270 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 271 */ 272 HISTORICAL_LIGATURES_OFF = 21, 273 /** 274 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 275 */ 276 UNCONNECTED = 0, 277 /** 278 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 279 */ 280 PARTIALLY_CONNECTED = 1, 281 /** 282 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LIGATURES 283 */ 284 CURSIVE = 2, 285 /** 286 * Deprecated 287 */ 288 UPPER_AND_LOWER_CASE = 0, 289 /** 290 * Deprecated 291 */ 292 ALL_CAPS = 1, 293 /** 294 * Deprecated 295 */ 296 ALL_LOWER_CASE = 2, 297 /** 298 * Deprecated 299 */ 300 SMALL_CAPS = 3, 301 /** 302 * Deprecated 303 */ 304 INITIAL_CAPS = 4, 305 /** 306 * Deprecated 307 */ 308 INITIAL_CAPS_AND_SMALL_CAPS = 5, 309 /** 310 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION 311 */ 312 SUBSTITUTE_VERTICAL_FORMS_ON = 0, 313 /** 314 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_SUBSTITUTION 315 */ 316 SUBSTITUTE_VERTICAL_FORMS_OFF = 1, 317 /** 318 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT 319 */ 320 LINGUISTIC_REARRANGEMENT_ON = 0, 321 /** 322 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LINGUISTIC_REARRANGEMENT 323 */ 324 LINGUISTIC_REARRANGEMENT_OFF = 1, 325 /** 326 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 327 */ 328 MONOSPACED_NUMBERS = 0, 329 /** 330 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 331 */ 332 PROPORTIONAL_NUMBERS = 1, 333 /** 334 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 335 */ 336 THIRD_WIDTH_NUMBERS = 2, 337 /** 338 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_SPACING 339 */ 340 QUARTER_WIDTH_NUMBERS = 3, 341 /** 342 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 343 */ 344 WORD_INITIAL_SWASHES_ON = 0, 345 /** 346 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 347 */ 348 WORD_INITIAL_SWASHES_OFF = 1, 349 /** 350 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 351 */ 352 WORD_FINAL_SWASHES_ON = 2, 353 /** 354 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 355 */ 356 WORD_FINAL_SWASHES_OFF = 3, 357 /** 358 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 359 */ 360 LINE_INITIAL_SWASHES_ON = 4, 361 /** 362 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 363 */ 364 LINE_INITIAL_SWASHES_OFF = 5, 365 /** 366 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 367 */ 368 LINE_FINAL_SWASHES_ON = 6, 369 /** 370 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 371 */ 372 LINE_FINAL_SWASHES_OFF = 7, 373 /** 374 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 375 */ 376 NON_FINAL_SWASHES_ON = 8, 377 /** 378 * for #HB_AAT_LAYOUT_FEATURE_TYPE_SMART_SWASH_TYPE 379 */ 380 NON_FINAL_SWASHES_OFF = 9, 381 /** 382 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE 383 */ 384 SHOW_DIACRITICS = 0, 385 /** 386 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE 387 */ 388 HIDE_DIACRITICS = 1, 389 /** 390 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DIACRITICS_TYPE 391 */ 392 DECOMPOSE_DIACRITICS = 2, 393 /** 394 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 395 */ 396 NORMAL_POSITION = 0, 397 /** 398 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 399 */ 400 SUPERIORS = 1, 401 /** 402 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 403 */ 404 INFERIORS = 2, 405 /** 406 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 407 */ 408 ORDINALS = 3, 409 /** 410 * for #HB_AAT_LAYOUT_FEATURE_TYPE_VERTICAL_POSITION 411 */ 412 SCIENTIFIC_INFERIORS = 4, 413 /** 414 * for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS 415 */ 416 NO_FRACTIONS = 0, 417 /** 418 * for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS 419 */ 420 VERTICAL_FRACTIONS = 1, 421 /** 422 * for #HB_AAT_LAYOUT_FEATURE_TYPE_FRACTIONS 423 */ 424 DIAGONAL_FRACTIONS = 2, 425 /** 426 * for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE 427 */ 428 PREVENT_OVERLAP_ON = 0, 429 /** 430 * for #HB_AAT_LAYOUT_FEATURE_TYPE_OVERLAPPING_CHARACTERS_TYPE 431 */ 432 PREVENT_OVERLAP_OFF = 1, 433 /** 434 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 435 */ 436 HYPHENS_TO_EM_DASH_ON = 0, 437 /** 438 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 439 */ 440 HYPHENS_TO_EM_DASH_OFF = 1, 441 /** 442 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 443 */ 444 HYPHEN_TO_EN_DASH_ON = 2, 445 /** 446 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 447 */ 448 HYPHEN_TO_EN_DASH_OFF = 3, 449 /** 450 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 451 */ 452 SLASHED_ZERO_ON = 4, 453 /** 454 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 455 */ 456 SLASHED_ZERO_OFF = 5, 457 /** 458 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 459 */ 460 FORM_INTERROBANG_ON = 6, 461 /** 462 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 463 */ 464 FORM_INTERROBANG_OFF = 7, 465 /** 466 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 467 */ 468 SMART_QUOTES_ON = 8, 469 /** 470 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 471 */ 472 SMART_QUOTES_OFF = 9, 473 /** 474 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 475 */ 476 PERIODS_TO_ELLIPSIS_ON = 10, 477 /** 478 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TYPOGRAPHIC_EXTRAS 479 */ 480 PERIODS_TO_ELLIPSIS_OFF = 11, 481 /** 482 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 483 */ 484 HYPHEN_TO_MINUS_ON = 0, 485 /** 486 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 487 */ 488 HYPHEN_TO_MINUS_OFF = 1, 489 /** 490 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 491 */ 492 ASTERISK_TO_MULTIPLY_ON = 2, 493 /** 494 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 495 */ 496 ASTERISK_TO_MULTIPLY_OFF = 3, 497 /** 498 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 499 */ 500 SLASH_TO_DIVIDE_ON = 4, 501 /** 502 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 503 */ 504 SLASH_TO_DIVIDE_OFF = 5, 505 /** 506 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 507 */ 508 INEQUALITY_LIGATURES_ON = 6, 509 /** 510 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 511 */ 512 INEQUALITY_LIGATURES_OFF = 7, 513 /** 514 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 515 */ 516 EXPONENTS_ON = 8, 517 /** 518 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 519 */ 520 EXPONENTS_OFF = 9, 521 /** 522 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 523 */ 524 MATHEMATICAL_GREEK_ON = 10, 525 /** 526 * for #HB_AAT_LAYOUT_FEATURE_TYPE_MATHEMATICAL_EXTRAS 527 */ 528 MATHEMATICAL_GREEK_OFF = 11, 529 /** 530 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 531 */ 532 NO_ORNAMENTS = 0, 533 /** 534 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 535 */ 536 DINGBATS = 1, 537 /** 538 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 539 */ 540 PI_CHARACTERS = 2, 541 /** 542 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 543 */ 544 FLEURONS = 3, 545 /** 546 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 547 */ 548 DECORATIVE_BORDERS = 4, 549 /** 550 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 551 */ 552 INTERNATIONAL_SYMBOLS = 5, 553 /** 554 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ORNAMENT_SETS_TYPE 555 */ 556 MATH_SYMBOLS = 6, 557 /** 558 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_ALTERNATIVES 559 */ 560 NO_ALTERNATES = 0, 561 /** 562 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 563 */ 564 DESIGN_LEVEL1 = 0, 565 /** 566 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 567 */ 568 DESIGN_LEVEL2 = 1, 569 /** 570 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 571 */ 572 DESIGN_LEVEL3 = 2, 573 /** 574 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 575 */ 576 DESIGN_LEVEL4 = 3, 577 /** 578 * for #HB_AAT_LAYOUT_FEATURE_TYPE_DESIGN_COMPLEXITY_TYPE 579 */ 580 DESIGN_LEVEL5 = 4, 581 /** 582 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 583 */ 584 NO_STYLE_OPTIONS = 0, 585 /** 586 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 587 */ 588 DISPLAY_TEXT = 1, 589 /** 590 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 591 */ 592 ENGRAVED_TEXT = 2, 593 /** 594 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 595 */ 596 ILLUMINATED_CAPS = 3, 597 /** 598 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 599 */ 600 TITLING_CAPS = 4, 601 /** 602 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLE_OPTIONS 603 */ 604 TALL_CAPS = 5, 605 /** 606 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 607 */ 608 TRADITIONAL_CHARACTERS = 0, 609 /** 610 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 611 */ 612 SIMPLIFIED_CHARACTERS = 1, 613 /** 614 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 615 */ 616 JIS1978_CHARACTERS = 2, 617 /** 618 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 619 */ 620 JIS1983_CHARACTERS = 3, 621 /** 622 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 623 */ 624 JIS1990_CHARACTERS = 4, 625 /** 626 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 627 */ 628 TRADITIONAL_ALT_ONE = 5, 629 /** 630 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 631 */ 632 TRADITIONAL_ALT_TWO = 6, 633 /** 634 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 635 */ 636 TRADITIONAL_ALT_THREE = 7, 637 /** 638 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 639 */ 640 TRADITIONAL_ALT_FOUR = 8, 641 /** 642 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 643 */ 644 TRADITIONAL_ALT_FIVE = 9, 645 /** 646 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 647 */ 648 EXPERT_CHARACTERS = 10, 649 /** 650 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 651 */ 652 JIS2004_CHARACTERS = 11, 653 /** 654 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 655 */ 656 HOJO_CHARACTERS = 12, 657 /** 658 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 659 */ 660 NLCCHARACTERS = 13, 661 /** 662 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CHARACTER_SHAPE 663 */ 664 TRADITIONAL_NAMES_CHARACTERS = 14, 665 /** 666 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE 667 */ 668 LOWER_CASE_NUMBERS = 0, 669 /** 670 * for #HB_AAT_LAYOUT_FEATURE_TYPE_NUMBER_CASE 671 */ 672 UPPER_CASE_NUMBERS = 1, 673 /** 674 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 675 */ 676 PROPORTIONAL_TEXT = 0, 677 /** 678 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 679 */ 680 MONOSPACED_TEXT = 1, 681 /** 682 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 683 */ 684 HALF_WIDTH_TEXT = 2, 685 /** 686 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 687 */ 688 THIRD_WIDTH_TEXT = 3, 689 /** 690 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 691 */ 692 QUARTER_WIDTH_TEXT = 4, 693 /** 694 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 695 */ 696 ALT_PROPORTIONAL_TEXT = 5, 697 /** 698 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TEXT_SPACING 699 */ 700 ALT_HALF_WIDTH_TEXT = 6, 701 /** 702 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 703 */ 704 NO_TRANSLITERATION = 0, 705 /** 706 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 707 */ 708 HANJA_TO_HANGUL = 1, 709 /** 710 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 711 */ 712 HIRAGANA_TO_KATAKANA = 2, 713 /** 714 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 715 */ 716 KATAKANA_TO_HIRAGANA = 3, 717 /** 718 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 719 */ 720 KANA_TO_ROMANIZATION = 4, 721 /** 722 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 723 */ 724 ROMANIZATION_TO_HIRAGANA = 5, 725 /** 726 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 727 */ 728 ROMANIZATION_TO_KATAKANA = 6, 729 /** 730 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 731 */ 732 HANJA_TO_HANGUL_ALT_ONE = 7, 733 /** 734 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 735 */ 736 HANJA_TO_HANGUL_ALT_TWO = 8, 737 /** 738 * for #HB_AAT_LAYOUT_FEATURE_TYPE_TRANSLITERATION 739 */ 740 HANJA_TO_HANGUL_ALT_THREE = 9, 741 /** 742 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 743 */ 744 NO_ANNOTATION = 0, 745 /** 746 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 747 */ 748 BOX_ANNOTATION = 1, 749 /** 750 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 751 */ 752 ROUNDED_BOX_ANNOTATION = 2, 753 /** 754 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 755 */ 756 CIRCLE_ANNOTATION = 3, 757 /** 758 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 759 */ 760 INVERTED_CIRCLE_ANNOTATION = 4, 761 /** 762 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 763 */ 764 PARENTHESIS_ANNOTATION = 5, 765 /** 766 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 767 */ 768 PERIOD_ANNOTATION = 6, 769 /** 770 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 771 */ 772 ROMAN_NUMERAL_ANNOTATION = 7, 773 /** 774 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 775 */ 776 DIAMOND_ANNOTATION = 8, 777 /** 778 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 779 */ 780 INVERTED_BOX_ANNOTATION = 9, 781 /** 782 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ANNOTATION_TYPE 783 */ 784 INVERTED_ROUNDED_BOX_ANNOTATION = 10, 785 /** 786 * for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE 787 */ 788 FULL_WIDTH_KANA = 0, 789 /** 790 * for #HB_AAT_LAYOUT_FEATURE_TYPE_KANA_SPACING_TYPE 791 */ 792 PROPORTIONAL_KANA = 1, 793 /** 794 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE 795 */ 796 FULL_WIDTH_IDEOGRAPHS = 0, 797 /** 798 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE 799 */ 800 PROPORTIONAL_IDEOGRAPHS = 1, 801 /** 802 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_SPACING_TYPE 803 */ 804 HALF_WIDTH_IDEOGRAPHS = 2, 805 /** 806 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 807 */ 808 CANONICAL_COMPOSITION_ON = 0, 809 /** 810 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 811 */ 812 CANONICAL_COMPOSITION_OFF = 1, 813 /** 814 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 815 */ 816 COMPATIBILITY_COMPOSITION_ON = 2, 817 /** 818 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 819 */ 820 COMPATIBILITY_COMPOSITION_OFF = 3, 821 /** 822 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 823 */ 824 TRANSCODING_COMPOSITION_ON = 4, 825 /** 826 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UNICODE_DECOMPOSITION_TYPE 827 */ 828 TRANSCODING_COMPOSITION_OFF = 5, 829 /** 830 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_OFF instead 831 */ 832 NO_RUBY_KANA = 0, 833 /** 834 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_RUBY_KANA_ON instead 835 */ 836 RUBY_KANA = 1, 837 /** 838 * for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA 839 */ 840 RUBY_KANA_ON = 2, 841 /** 842 * for #HB_AAT_LAYOUT_FEATURE_TYPE_RUBY_KANA 843 */ 844 RUBY_KANA_OFF = 3, 845 /** 846 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 847 */ 848 NO_CJK_SYMBOL_ALTERNATIVES = 0, 849 /** 850 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 851 */ 852 CJK_SYMBOL_ALT_ONE = 1, 853 /** 854 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 855 */ 856 CJK_SYMBOL_ALT_TWO = 2, 857 /** 858 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 859 */ 860 CJK_SYMBOL_ALT_THREE = 3, 861 /** 862 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 863 */ 864 CJK_SYMBOL_ALT_FOUR = 4, 865 /** 866 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_SYMBOL_ALTERNATIVES_TYPE 867 */ 868 CJK_SYMBOL_ALT_FIVE = 5, 869 /** 870 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 871 */ 872 NO_IDEOGRAPHIC_ALTERNATIVES = 0, 873 /** 874 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 875 */ 876 IDEOGRAPHIC_ALT_ONE = 1, 877 /** 878 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 879 */ 880 IDEOGRAPHIC_ALT_TWO = 2, 881 /** 882 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 883 */ 884 IDEOGRAPHIC_ALT_THREE = 3, 885 /** 886 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 887 */ 888 IDEOGRAPHIC_ALT_FOUR = 4, 889 /** 890 * for #HB_AAT_LAYOUT_FEATURE_TYPE_IDEOGRAPHIC_ALTERNATIVES_TYPE 891 */ 892 IDEOGRAPHIC_ALT_FIVE = 5, 893 /** 894 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE 895 */ 896 CJK_VERTICAL_ROMAN_CENTERED = 0, 897 /** 898 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_VERTICAL_ROMAN_PLACEMENT_TYPE 899 */ 900 CJK_VERTICAL_ROMAN_HBASELINE = 1, 901 /** 902 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_OFF instead 903 */ 904 NO_CJK_ITALIC_ROMAN = 0, 905 /** 906 * Deprecated; use #HB_AAT_LAYOUT_FEATURE_SELECTOR_CJK_ITALIC_ROMAN_ON instead 907 */ 908 CJK_ITALIC_ROMAN = 1, 909 /** 910 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN 911 */ 912 CJK_ITALIC_ROMAN_ON = 2, 913 /** 914 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ITALIC_CJK_ROMAN 915 */ 916 CJK_ITALIC_ROMAN_OFF = 3, 917 /** 918 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 919 */ 920 CASE_SENSITIVE_LAYOUT_ON = 0, 921 /** 922 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 923 */ 924 CASE_SENSITIVE_LAYOUT_OFF = 1, 925 /** 926 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 927 */ 928 CASE_SENSITIVE_SPACING_ON = 2, 929 /** 930 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CASE_SENSITIVE_LAYOUT 931 */ 932 CASE_SENSITIVE_SPACING_OFF = 3, 933 /** 934 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 935 */ 936 ALTERNATE_HORIZ_KANA_ON = 0, 937 /** 938 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 939 */ 940 ALTERNATE_HORIZ_KANA_OFF = 1, 941 /** 942 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 943 */ 944 ALTERNATE_VERT_KANA_ON = 2, 945 /** 946 * for #HB_AAT_LAYOUT_FEATURE_TYPE_ALTERNATE_KANA 947 */ 948 ALTERNATE_VERT_KANA_OFF = 3, 949 /** 950 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 951 */ 952 NO_STYLISTIC_ALTERNATES = 0, 953 /** 954 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 955 */ 956 STYLISTIC_ALT_ONE_ON = 2, 957 /** 958 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 959 */ 960 STYLISTIC_ALT_ONE_OFF = 3, 961 /** 962 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 963 */ 964 STYLISTIC_ALT_TWO_ON = 4, 965 /** 966 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 967 */ 968 STYLISTIC_ALT_TWO_OFF = 5, 969 /** 970 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 971 */ 972 STYLISTIC_ALT_THREE_ON = 6, 973 /** 974 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 975 */ 976 STYLISTIC_ALT_THREE_OFF = 7, 977 /** 978 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 979 */ 980 STYLISTIC_ALT_FOUR_ON = 8, 981 /** 982 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 983 */ 984 STYLISTIC_ALT_FOUR_OFF = 9, 985 /** 986 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 987 */ 988 STYLISTIC_ALT_FIVE_ON = 10, 989 /** 990 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 991 */ 992 STYLISTIC_ALT_FIVE_OFF = 11, 993 /** 994 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 995 */ 996 STYLISTIC_ALT_SIX_ON = 12, 997 /** 998 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 999 */ 1000 STYLISTIC_ALT_SIX_OFF = 13, 1001 /** 1002 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1003 */ 1004 STYLISTIC_ALT_SEVEN_ON = 14, 1005 /** 1006 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1007 */ 1008 STYLISTIC_ALT_SEVEN_OFF = 15, 1009 /** 1010 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1011 */ 1012 STYLISTIC_ALT_EIGHT_ON = 16, 1013 /** 1014 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1015 */ 1016 STYLISTIC_ALT_EIGHT_OFF = 17, 1017 /** 1018 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1019 */ 1020 STYLISTIC_ALT_NINE_ON = 18, 1021 /** 1022 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1023 */ 1024 STYLISTIC_ALT_NINE_OFF = 19, 1025 /** 1026 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1027 */ 1028 STYLISTIC_ALT_TEN_ON = 20, 1029 /** 1030 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1031 */ 1032 STYLISTIC_ALT_TEN_OFF = 21, 1033 /** 1034 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1035 */ 1036 STYLISTIC_ALT_ELEVEN_ON = 22, 1037 /** 1038 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1039 */ 1040 STYLISTIC_ALT_ELEVEN_OFF = 23, 1041 /** 1042 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1043 */ 1044 STYLISTIC_ALT_TWELVE_ON = 24, 1045 /** 1046 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1047 */ 1048 STYLISTIC_ALT_TWELVE_OFF = 25, 1049 /** 1050 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1051 */ 1052 STYLISTIC_ALT_THIRTEEN_ON = 26, 1053 /** 1054 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1055 */ 1056 STYLISTIC_ALT_THIRTEEN_OFF = 27, 1057 /** 1058 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1059 */ 1060 STYLISTIC_ALT_FOURTEEN_ON = 28, 1061 /** 1062 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1063 */ 1064 STYLISTIC_ALT_FOURTEEN_OFF = 29, 1065 /** 1066 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1067 */ 1068 STYLISTIC_ALT_FIFTEEN_ON = 30, 1069 /** 1070 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1071 */ 1072 STYLISTIC_ALT_FIFTEEN_OFF = 31, 1073 /** 1074 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1075 */ 1076 STYLISTIC_ALT_SIXTEEN_ON = 32, 1077 /** 1078 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1079 */ 1080 STYLISTIC_ALT_SIXTEEN_OFF = 33, 1081 /** 1082 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1083 */ 1084 STYLISTIC_ALT_SEVENTEEN_ON = 34, 1085 /** 1086 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1087 */ 1088 STYLISTIC_ALT_SEVENTEEN_OFF = 35, 1089 /** 1090 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1091 */ 1092 STYLISTIC_ALT_EIGHTEEN_ON = 36, 1093 /** 1094 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1095 */ 1096 STYLISTIC_ALT_EIGHTEEN_OFF = 37, 1097 /** 1098 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1099 */ 1100 STYLISTIC_ALT_NINETEEN_ON = 38, 1101 /** 1102 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1103 */ 1104 STYLISTIC_ALT_NINETEEN_OFF = 39, 1105 /** 1106 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1107 */ 1108 STYLISTIC_ALT_TWENTY_ON = 40, 1109 /** 1110 * for #HB_AAT_LAYOUT_FEATURE_TYPE_STYLISTIC_ALTERNATIVES 1111 */ 1112 STYLISTIC_ALT_TWENTY_OFF = 41, 1113 /** 1114 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1115 */ 1116 CONTEXTUAL_ALTERNATES_ON = 0, 1117 /** 1118 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1119 */ 1120 CONTEXTUAL_ALTERNATES_OFF = 1, 1121 /** 1122 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1123 */ 1124 SWASH_ALTERNATES_ON = 2, 1125 /** 1126 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1127 */ 1128 SWASH_ALTERNATES_OFF = 3, 1129 /** 1130 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1131 */ 1132 CONTEXTUAL_SWASH_ALTERNATES_ON = 4, 1133 /** 1134 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CONTEXTUAL_ALTERNATIVES 1135 */ 1136 CONTEXTUAL_SWASH_ALTERNATES_OFF = 5, 1137 /** 1138 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE 1139 */ 1140 DEFAULT_LOWER_CASE = 0, 1141 /** 1142 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE 1143 */ 1144 LOWER_CASE_SMALL_CAPS = 1, 1145 /** 1146 * for #HB_AAT_LAYOUT_FEATURE_TYPE_LOWER_CASE 1147 */ 1148 LOWER_CASE_PETITE_CAPS = 2, 1149 /** 1150 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE 1151 */ 1152 DEFAULT_UPPER_CASE = 0, 1153 /** 1154 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE 1155 */ 1156 UPPER_CASE_SMALL_CAPS = 1, 1157 /** 1158 * for #HB_AAT_LAYOUT_FEATURE_TYPE_UPPER_CASE 1159 */ 1160 UPPER_CASE_PETITE_CAPS = 2, 1161 /** 1162 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1163 */ 1164 HALF_WIDTH_CJK_ROMAN = 0, 1165 /** 1166 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1167 */ 1168 PROPORTIONAL_CJK_ROMAN = 1, 1169 /** 1170 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1171 */ 1172 DEFAULT_CJK_ROMAN = 2, 1173 /** 1174 * for #HB_AAT_LAYOUT_FEATURE_TYPE_CJK_ROMAN_SPACING_TYPE 1175 */ 1176 FULL_WIDTH_CJK_ROMAN = 3, 1177 } 1178 alias hb_aat_layout_feature_selector_t aat_layout_feature_selector_t; 1179 1180 /** 1181 * The possible feature types defined for AAT shaping, from Apple [Font Feature Registry](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html). 1182 * 1183 * Since: 2.2.0 1184 */ 1185 public enum hb_aat_layout_feature_type_t 1186 { 1187 /** 1188 * Initial, unset feature type 1189 */ 1190 INVALID = 65535, 1191 /** 1192 * [All Typographic Features](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type0) 1193 */ 1194 ALL_TYPOGRAPHIC = 0, 1195 /** 1196 * [Ligatures](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type1) 1197 */ 1198 LIGATURES = 1, 1199 /** 1200 * [Cursive Connection](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type2) 1201 */ 1202 CURISVE_CONNECTION = 2, 1203 /** 1204 * [Letter Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type3) 1205 */ 1206 LETTER_CASE = 3, 1207 /** 1208 * [Vertical Substitution](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type4) 1209 */ 1210 VERTICAL_SUBSTITUTION = 4, 1211 /** 1212 * [Linguistic Rearrangement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type5) 1213 */ 1214 LINGUISTIC_REARRANGEMENT = 5, 1215 /** 1216 * [Number Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type6) 1217 */ 1218 NUMBER_SPACING = 6, 1219 /** 1220 * [Smart Swash](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type8) 1221 */ 1222 SMART_SWASH_TYPE = 8, 1223 /** 1224 * [Diacritics](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type9) 1225 */ 1226 DIACRITICS_TYPE = 9, 1227 /** 1228 * [Vertical Position](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type10) 1229 */ 1230 VERTICAL_POSITION = 10, 1231 /** 1232 * [Fractions](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type11) 1233 */ 1234 FRACTIONS = 11, 1235 /** 1236 * [Overlapping Characters](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type13) 1237 */ 1238 OVERLAPPING_CHARACTERS_TYPE = 13, 1239 /** 1240 * [Typographic Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type14) 1241 */ 1242 TYPOGRAPHIC_EXTRAS = 14, 1243 /** 1244 * [Mathematical Extras](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type15) 1245 */ 1246 MATHEMATICAL_EXTRAS = 15, 1247 /** 1248 * [Ornament Sets](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type16) 1249 */ 1250 ORNAMENT_SETS_TYPE = 16, 1251 /** 1252 * [Character Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type17) 1253 */ 1254 CHARACTER_ALTERNATIVES = 17, 1255 /** 1256 * [Design Complexity](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type18) 1257 */ 1258 DESIGN_COMPLEXITY_TYPE = 18, 1259 /** 1260 * [Style Options](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type19) 1261 */ 1262 STYLE_OPTIONS = 19, 1263 /** 1264 * [Character Shape](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type20) 1265 */ 1266 CHARACTER_SHAPE = 20, 1267 /** 1268 * [Number Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type21) 1269 */ 1270 NUMBER_CASE = 21, 1271 /** 1272 * [Text Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type22) 1273 */ 1274 TEXT_SPACING = 22, 1275 /** 1276 * [Transliteration](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type23) 1277 */ 1278 TRANSLITERATION = 23, 1279 /** 1280 * [Annotation](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type24) 1281 */ 1282 ANNOTATION_TYPE = 24, 1283 /** 1284 * [Kana Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type25) 1285 */ 1286 KANA_SPACING_TYPE = 25, 1287 /** 1288 * [Ideographic Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type26) 1289 */ 1290 IDEOGRAPHIC_SPACING_TYPE = 26, 1291 /** 1292 * [Unicode Decomposition](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type27) 1293 */ 1294 UNICODE_DECOMPOSITION_TYPE = 27, 1295 /** 1296 * [Ruby Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type28) 1297 */ 1298 RUBY_KANA = 28, 1299 /** 1300 * [CJK Symbol Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type29) 1301 */ 1302 CJK_SYMBOL_ALTERNATIVES_TYPE = 29, 1303 /** 1304 * [Ideographic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type30) 1305 */ 1306 IDEOGRAPHIC_ALTERNATIVES_TYPE = 30, 1307 /** 1308 * [CJK Vertical Roman Placement](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type31) 1309 */ 1310 CJK_VERTICAL_ROMAN_PLACEMENT_TYPE = 31, 1311 /** 1312 * [Italic CJK Roman](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type32) 1313 */ 1314 ITALIC_CJK_ROMAN = 32, 1315 /** 1316 * [Case Sensitive Layout](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type33) 1317 */ 1318 CASE_SENSITIVE_LAYOUT = 33, 1319 /** 1320 * [Alternate Kana](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type34) 1321 */ 1322 ALTERNATE_KANA = 34, 1323 /** 1324 * [Stylistic Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type35) 1325 */ 1326 STYLISTIC_ALTERNATIVES = 35, 1327 /** 1328 * [Contextual Alternatives](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type36) 1329 */ 1330 CONTEXTUAL_ALTERNATIVES = 36, 1331 /** 1332 * [Lower Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type37) 1333 */ 1334 LOWER_CASE = 37, 1335 /** 1336 * [Upper Case](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type38) 1337 */ 1338 UPPER_CASE = 38, 1339 /** 1340 * [Language Tag](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type39) 1341 */ 1342 LANGUAGE_TAG_TYPE = 39, 1343 /** 1344 * [CJK Roman Spacing](https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html#Type103) 1345 */ 1346 CJK_ROMAN_SPACING_TYPE = 103, 1347 } 1348 alias hb_aat_layout_feature_type_t aat_layout_feature_type_t; 1349 1350 /** 1351 * Data type for holding HarfBuzz's clustering behavior options. The cluster level 1352 * dictates one aspect of how HarfBuzz will treat non-base characters 1353 * during shaping. 1354 * 1355 * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES, non-base 1356 * characters are merged into the cluster of the base character that precedes them. 1357 * 1358 * In @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS, non-base characters are initially 1359 * assigned their own cluster values, which are not merged into preceding base 1360 * clusters. This allows HarfBuzz to perform additional operations like reorder 1361 * sequences of adjacent marks. 1362 * 1363 * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES is the default, because it maintains 1364 * backward compatibility with older versions of HarfBuzz. New client programs that 1365 * do not need to maintain such backward compatibility are recommended to use 1366 * @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS instead of the default. 1367 * 1368 * Since: 0.9.42 1369 */ 1370 public enum hb_buffer_cluster_level_t 1371 { 1372 /** 1373 * Return cluster values grouped by graphemes into 1374 * monotone order. 1375 */ 1376 MONOTONE_GRAPHEMES = 0, 1377 /** 1378 * Return cluster values grouped into monotone order. 1379 */ 1380 MONOTONE_CHARACTERS = 1, 1381 /** 1382 * Don't group cluster values. 1383 */ 1384 CHARACTERS = 2, 1385 /** 1386 * Default cluster level, 1387 * equal to @HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES. 1388 */ 1389 DEFAULT = 0, 1390 } 1391 alias hb_buffer_cluster_level_t buffer_cluster_level_t; 1392 1393 /** 1394 * The type of #hb_buffer_t contents. 1395 */ 1396 public enum hb_buffer_content_type_t 1397 { 1398 /** 1399 * Initial value for new buffer. 1400 */ 1401 INVALID = 0, 1402 /** 1403 * The buffer contains input characters (before shaping). 1404 */ 1405 UNICODE = 1, 1406 /** 1407 * The buffer contains output glyphs (after shaping). 1408 */ 1409 GLYPHS = 2, 1410 } 1411 alias hb_buffer_content_type_t buffer_content_type_t; 1412 1413 /** 1414 * Flags from comparing two #hb_buffer_t's. 1415 * 1416 * Buffer with different #hb_buffer_content_type_t cannot be meaningfully 1417 * compared in any further detail. 1418 * 1419 * For buffers with differing length, the per-glyph comparison is not 1420 * attempted, though we do still scan reference buffer for dotted circle and 1421 * `.notdef` glyphs. 1422 * 1423 * If the buffers have the same length, we compare them glyph-by-glyph and 1424 * report which aspect(s) of the glyph info/position are different. 1425 * 1426 * Since: 1.5.0 1427 */ 1428 public enum hb_buffer_diff_flags_t 1429 { 1430 /** 1431 * equal buffers. 1432 */ 1433 EQUAL = 0, 1434 /** 1435 * buffers with different 1436 * #hb_buffer_content_type_t. 1437 */ 1438 CONTENT_TYPE_MISMATCH = 1, 1439 /** 1440 * buffers with differing length. 1441 */ 1442 LENGTH_MISMATCH = 2, 1443 /** 1444 * `.notdef` glyph is present in the 1445 * reference buffer. 1446 */ 1447 NOTDEF_PRESENT = 4, 1448 /** 1449 * dotted circle glyph is present 1450 * in the reference buffer. 1451 */ 1452 DOTTED_CIRCLE_PRESENT = 8, 1453 /** 1454 * difference in #hb_glyph_info_t.codepoint 1455 */ 1456 CODEPOINT_MISMATCH = 16, 1457 /** 1458 * difference in #hb_glyph_info_t.cluster 1459 */ 1460 CLUSTER_MISMATCH = 32, 1461 /** 1462 * difference in #hb_glyph_flags_t. 1463 */ 1464 GLYPH_FLAGS_MISMATCH = 64, 1465 /** 1466 * difference in #hb_glyph_position_t. 1467 */ 1468 POSITION_MISMATCH = 128, 1469 } 1470 alias hb_buffer_diff_flags_t buffer_diff_flags_t; 1471 1472 /** 1473 * Flags for #hb_buffer_t. 1474 * 1475 * Since: 0.9.20 1476 */ 1477 public enum hb_buffer_flags_t 1478 { 1479 /** 1480 * the default buffer flag. 1481 */ 1482 DEFAULT = 0, 1483 /** 1484 * flag indicating that special handling of the beginning 1485 * of text paragraph can be applied to this buffer. Should usually 1486 * be set, unless you are passing to the buffer only part 1487 * of the text without the full context. 1488 */ 1489 BOT = 1, 1490 /** 1491 * flag indicating that special handling of the end of text 1492 * paragraph can be applied to this buffer, similar to 1493 * @HB_BUFFER_FLAG_BOT. 1494 */ 1495 EOT = 2, 1496 /** 1497 * flag indication that character with Default_Ignorable 1498 * Unicode property should use the corresponding glyph 1499 * from the font, instead of hiding them (done by 1500 * replacing them with the space glyph and zeroing the 1501 * advance width.) This flag takes precedence over 1502 * @HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES. 1503 */ 1504 PRESERVE_DEFAULT_IGNORABLES = 4, 1505 /** 1506 * flag indication that character with Default_Ignorable 1507 * Unicode property should be removed from glyph string 1508 * instead of hiding them (done by replacing them with the 1509 * space glyph and zeroing the advance width.) 1510 * @HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES takes 1511 * precedence over this flag. Since: 1.8.0 1512 */ 1513 REMOVE_DEFAULT_IGNORABLES = 8, 1514 /** 1515 * flag indicating that a dotted circle should 1516 * not be inserted in the rendering of incorrect 1517 * character sequences (such at <0905 093E>). Since: 2.4.0 1518 */ 1519 DO_NOT_INSERT_DOTTED_CIRCLE = 16, 1520 /** 1521 * flag indicating that the hb_shape() call and its variants 1522 * should perform various verification processes on the results 1523 * of the shaping operation on the buffer. If the verification 1524 * fails, then either a buffer message is sent, if a message 1525 * handler is installed on the buffer, or a message is written 1526 * to standard error. In either case, the shaping result might 1527 * be modified to show the failed output. Since: 3.4.0 1528 */ 1529 VERIFY = 32, 1530 /** 1531 * flag indicating that the @HB_GLYPH_FLAG_UNSAFE_TO_CONCAT 1532 * glyph-flag should be produced by the shaper. By default 1533 * it will not be produced since it incurs a cost. Since: 4.0.0 1534 */ 1535 PRODUCE_UNSAFE_TO_CONCAT = 64, 1536 } 1537 alias hb_buffer_flags_t buffer_flags_t; 1538 1539 /** 1540 * Flags that control what glyph information are serialized in hb_buffer_serialize_glyphs(). 1541 * 1542 * Since: 0.9.20 1543 */ 1544 public enum hb_buffer_serialize_flags_t 1545 { 1546 /** 1547 * serialize glyph names, clusters and positions. 1548 */ 1549 DEFAULT = 0, 1550 /** 1551 * do not serialize glyph cluster. 1552 */ 1553 NO_CLUSTERS = 1, 1554 /** 1555 * do not serialize glyph position information. 1556 */ 1557 NO_POSITIONS = 2, 1558 /** 1559 * do no serialize glyph name. 1560 */ 1561 NO_GLYPH_NAMES = 4, 1562 /** 1563 * serialize glyph extents. 1564 */ 1565 GLYPH_EXTENTS = 8, 1566 /** 1567 * serialize glyph flags. Since: 1.5.0 1568 */ 1569 GLYPH_FLAGS = 16, 1570 /** 1571 * do not serialize glyph advances, 1572 * glyph offsets will reflect absolute glyph positions. Since: 1.8.0 1573 */ 1574 NO_ADVANCES = 32, 1575 } 1576 alias hb_buffer_serialize_flags_t buffer_serialize_flags_t; 1577 1578 /** 1579 * The buffer serialization and de-serialization format used in 1580 * hb_buffer_serialize_glyphs() and hb_buffer_deserialize_glyphs(). 1581 * 1582 * Since: 0.9.2 1583 */ 1584 public enum hb_buffer_serialize_format_t 1585 { 1586 /** 1587 * a human-readable, plain text format. 1588 */ 1589 TEXT = 1413830740, 1590 /** 1591 * a machine-readable JSON format. 1592 */ 1593 JSON = 1246973774, 1594 /** 1595 * invalid format. 1596 */ 1597 INVALID = 0, 1598 } 1599 alias hb_buffer_serialize_format_t buffer_serialize_format_t; 1600 1601 /** 1602 * The direction of a text segment or buffer. 1603 * 1604 * A segment can also be tested for horizontal or vertical 1605 * orientation (irrespective of specific direction) with 1606 * HB_DIRECTION_IS_HORIZONTAL() or HB_DIRECTION_IS_VERTICAL(). 1607 */ 1608 public enum hb_direction_t 1609 { 1610 /** 1611 * Initial, unset direction. 1612 */ 1613 INVALID = 0, 1614 /** 1615 * Text is set horizontally from left to right. 1616 */ 1617 LTR = 4, 1618 /** 1619 * Text is set horizontally from right to left. 1620 */ 1621 RTL = 5, 1622 /** 1623 * Text is set vertically from top to bottom. 1624 */ 1625 TTB = 6, 1626 /** 1627 * Text is set vertically from bottom to top. 1628 */ 1629 BTT = 7, 1630 } 1631 alias hb_direction_t direction_t; 1632 1633 /** 1634 * Flags for #hb_glyph_info_t. 1635 * 1636 * Since: 1.5.0 1637 */ 1638 public enum hb_glyph_flags_t 1639 { 1640 /** 1641 * Indicates that if input text is broken at the 1642 * beginning of the cluster this glyph is part of, 1643 * then both sides need to be re-shaped, as the 1644 * result might be different. 1645 * On the flip side, it means that when this 1646 * flag is not present, then it is safe to break 1647 * the glyph-run at the beginning of this 1648 * cluster, and the two sides will represent the 1649 * exact same result one would get if breaking 1650 * input text at the beginning of this cluster 1651 * and shaping the two sides separately. 1652 * This can be used to optimize paragraph 1653 * layout, by avoiding re-shaping of each line 1654 * after line-breaking. 1655 */ 1656 UNSAFE_TO_BREAK = 1, 1657 /** 1658 * Indicates that if input text is changed on one 1659 * side of the beginning of the cluster this glyph 1660 * is part of, then the shaping results for the 1661 * other side might change. 1662 * Note that the absence of this flag will NOT by 1663 * itself mean that it IS safe to concat text. 1664 * Only two pieces of text both of which clear of 1665 * this flag can be concatenated safely. 1666 * This can be used to optimize paragraph 1667 * layout, by avoiding re-shaping of each line 1668 * after line-breaking, by limiting the 1669 * reshaping to a small piece around the 1670 * breaking positin only, even if the breaking 1671 * position carries the 1672 * #HB_GLYPH_FLAG_UNSAFE_TO_BREAK or when 1673 * hyphenation or other text transformation 1674 * happens at line-break position, in the following 1675 * way: 1676 * 1. Iterate back from the line-break position 1677 * until the first cluster start position that is 1678 * NOT unsafe-to-concat, 2. shape the segment from 1679 * there till the end of line, 3. check whether the 1680 * resulting glyph-run also is clear of the 1681 * unsafe-to-concat at its start-of-text position; 1682 * if it is, just splice it into place and the line 1683 * is shaped; If not, move on to a position further 1684 * back that is clear of unsafe-to-concat and retry 1685 * from there, and repeat. 1686 * At the start of next line a similar algorithm can 1687 * be implemented. That is: 1. Iterate forward from 1688 * the line-break position until the first cluster 1689 * start position that is NOT unsafe-to-concat, 2. 1690 * shape the segment from beginning of the line to 1691 * that position, 3. check whether the resulting 1692 * glyph-run also is clear of the unsafe-to-concat 1693 * at its end-of-text position; if it is, just splice 1694 * it into place and the beginning is shaped; If not, 1695 * move on to a position further forward that is clear 1696 * of unsafe-to-concat and retry up to there, and repeat. 1697 * A slight complication will arise in the 1698 * implementation of the algorithm above, 1699 * because while our buffer API has a way to 1700 * return flags for position corresponding to 1701 * start-of-text, there is currently no position 1702 * corresponding to end-of-text. This limitation 1703 * can be alleviated by shaping more text than needed 1704 * and looking for unsafe-to-concat flag within text 1705 * clusters. 1706 * The #HB_GLYPH_FLAG_UNSAFE_TO_BREAK flag will 1707 * always imply this flag. 1708 * To use this flag, you must enable the buffer flag 1709 * @HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT during 1710 * shaping, otherwise the buffer flag will not be 1711 * reliably produced. 1712 * Since: 4.0.0 1713 */ 1714 UNSAFE_TO_CONCAT = 2, 1715 /** 1716 * All the currently defined flags. 1717 */ 1718 DEFINED = 3, 1719 } 1720 alias hb_glyph_flags_t glyph_flags_t; 1721 1722 /** 1723 * Data type holding the memory modes available to 1724 * client programs. 1725 * 1726 * Regarding these various memory-modes: 1727 * 1728 * - In no case shall the HarfBuzz client modify memory 1729 * that is passed to HarfBuzz in a blob. If there is 1730 * any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used 1731 * such that HarfBuzz makes a copy immediately, 1732 * 1733 * - Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really 1734 * really know what you are doing, 1735 * 1736 * - @HB_MEMORY_MODE_WRITABLE is appropriate if you really made a 1737 * copy of data solely for the purpose of passing to 1738 * HarfBuzz and doing that just once (no reuse!), 1739 * 1740 * - If the font is mmap()ed, it's okay to use 1741 * @HB_MEMORY_READONLY_MAY_MAKE_WRITABLE, however, using that mode 1742 * correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead. 1743 */ 1744 public enum hb_memory_mode_t 1745 { 1746 /** 1747 * HarfBuzz immediately makes a copy of the data. 1748 */ 1749 DUPLICATE = 0, 1750 /** 1751 * HarfBuzz client will never modify the data, 1752 * and HarfBuzz will never modify the data. 1753 */ 1754 READONLY = 1, 1755 /** 1756 * HarfBuzz client made a copy of the data solely 1757 * for HarfBuzz, so HarfBuzz may modify the data. 1758 */ 1759 WRITABLE = 2, 1760 /** 1761 * See above 1762 */ 1763 READONLY_MAY_MAKE_WRITABLE = 3, 1764 } 1765 alias hb_memory_mode_t memory_mode_t; 1766 1767 /** 1768 * Flags that describe the properties of color palette. 1769 * 1770 * Since: 2.1.0 1771 */ 1772 public enum hb_ot_color_palette_flags_t 1773 { 1774 /** 1775 * Default indicating that there is nothing special 1776 * to note about a color palette. 1777 */ 1778 DEFAULT = 0, 1779 /** 1780 * Flag indicating that the color 1781 * palette is appropriate to use when displaying the font on a light background such as white. 1782 */ 1783 USABLE_WITH_LIGHT_BACKGROUND = 1, 1784 /** 1785 * Flag indicating that the color 1786 * palette is appropriate to use when displaying the font on a dark background such as black. 1787 */ 1788 USABLE_WITH_DARK_BACKGROUND = 2, 1789 } 1790 alias hb_ot_color_palette_flags_t ot_color_palette_flags_t; 1791 1792 /** 1793 * Baseline tags from [Baseline Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/baselinetags) registry. 1794 * 1795 * Since: 2.6.0 1796 */ 1797 public enum hb_ot_layout_baseline_tag_t 1798 { 1799 /** 1800 * The baseline used by alphabetic scripts such as Latin, Cyrillic and Greek. 1801 * In vertical writing mode, the alphabetic baseline for characters rotated 90 degrees clockwise. 1802 * (This would not apply to alphabetic characters that remain upright in vertical writing mode, since these 1803 * characters are not rotated.) 1804 */ 1805 ROMAN = 1919905134, 1806 /** 1807 * The hanging baseline. In horizontal direction, this is the horizontal 1808 * line from which syllables seem, to hang in Tibetan and other similar scripts. In vertical writing mode, 1809 * for Tibetan (or some other similar script) characters rotated 90 degrees clockwise. 1810 */ 1811 HANGING = 1751215719, 1812 /** 1813 * Ideographic character face bottom or left edge, 1814 * if the direction is horizontal or vertical, respectively. 1815 */ 1816 IDEO_FACE_BOTTOM_OR_LEFT = 1768121954, 1817 /** 1818 * Ideographic character face top or right edge, 1819 * if the direction is horizontal or vertical, respectively. 1820 */ 1821 IDEO_FACE_TOP_OR_RIGHT = 1768121972, 1822 /** 1823 * The center of the ideographic character face. Since: 4.0.0 1824 */ 1825 IDEO_FACE_CENTRAL = 1231251043, 1826 /** 1827 * Ideographic em-box bottom or left edge, 1828 * if the direction is horizontal or vertical, respectively. 1829 */ 1830 IDEO_EMBOX_BOTTOM_OR_LEFT = 1768187247, 1831 /** 1832 * Ideographic em-box top or right edge baseline, 1833 */ 1834 IDEO_EMBOX_TOP_OR_RIGHT = 1768191088, 1835 /** 1836 * The center of the ideographic em-box. Since: 4.0.0 1837 * if the direction is horizontal or vertical, respectively. 1838 */ 1839 IDEO_EMBOX_CENTRAL = 1231315813, 1840 /** 1841 * The baseline about which mathematical characters are centered. 1842 * In vertical writing mode when mathematical characters rotated 90 degrees clockwise, are centered. 1843 */ 1844 MATH = 1835103336, 1845 } 1846 alias hb_ot_layout_baseline_tag_t ot_layout_baseline_tag_t; 1847 1848 /** 1849 * The GDEF classes defined for glyphs. 1850 */ 1851 public enum hb_ot_layout_glyph_class_t 1852 { 1853 /** 1854 * Glyphs not matching the other classifications 1855 */ 1856 UNCLASSIFIED = 0, 1857 /** 1858 * Spacing, single characters, capable of accepting marks 1859 */ 1860 BASE_GLYPH = 1, 1861 /** 1862 * Glyphs that represent ligation of multiple characters 1863 */ 1864 LIGATURE = 2, 1865 /** 1866 * Non-spacing, combining glyphs that represent marks 1867 */ 1868 MARK = 3, 1869 /** 1870 * Spacing glyphs that represent part of a single character 1871 */ 1872 COMPONENT = 4, 1873 } 1874 alias hb_ot_layout_glyph_class_t ot_layout_glyph_class_t; 1875 1876 /** 1877 * The 'MATH' table constants, refer to 1878 * [OpenType documentation](https://docs.microsoft.com/en-us/typography/opentype/spec/math#mathconstants-table) 1879 * For more explanations. 1880 * 1881 * Since: 1.3.3 1882 */ 1883 public enum hb_ot_math_constant_t 1884 { 1885 /** 1886 * scriptPercentScaleDown 1887 */ 1888 SCRIPT_PERCENT_SCALE_DOWN = 0, 1889 /** 1890 * scriptScriptPercentScaleDown 1891 */ 1892 SCRIPT_SCRIPT_PERCENT_SCALE_DOWN = 1, 1893 /** 1894 * delimitedSubFormulaMinHeight 1895 */ 1896 DELIMITED_SUB_FORMULA_MIN_HEIGHT = 2, 1897 /** 1898 * displayOperatorMinHeight 1899 */ 1900 DISPLAY_OPERATOR_MIN_HEIGHT = 3, 1901 /** 1902 * mathLeading 1903 */ 1904 MATH_LEADING = 4, 1905 /** 1906 * axisHeight 1907 */ 1908 AXIS_HEIGHT = 5, 1909 /** 1910 * accentBaseHeight 1911 */ 1912 ACCENT_BASE_HEIGHT = 6, 1913 /** 1914 * flattenedAccentBaseHeight 1915 */ 1916 FLATTENED_ACCENT_BASE_HEIGHT = 7, 1917 /** 1918 * subscriptShiftDown 1919 */ 1920 SUBSCRIPT_SHIFT_DOWN = 8, 1921 /** 1922 * subscriptTopMax 1923 */ 1924 SUBSCRIPT_TOP_MAX = 9, 1925 /** 1926 * subscriptBaselineDropMin 1927 */ 1928 SUBSCRIPT_BASELINE_DROP_MIN = 10, 1929 /** 1930 * superscriptShiftUp 1931 */ 1932 SUPERSCRIPT_SHIFT_UP = 11, 1933 /** 1934 * superscriptShiftUpCramped 1935 */ 1936 SUPERSCRIPT_SHIFT_UP_CRAMPED = 12, 1937 /** 1938 * superscriptBottomMin 1939 */ 1940 SUPERSCRIPT_BOTTOM_MIN = 13, 1941 /** 1942 * superscriptBaselineDropMax 1943 */ 1944 SUPERSCRIPT_BASELINE_DROP_MAX = 14, 1945 /** 1946 * subSuperscriptGapMin 1947 */ 1948 SUB_SUPERSCRIPT_GAP_MIN = 15, 1949 /** 1950 * superscriptBottomMaxWithSubscript 1951 */ 1952 SUPERSCRIPT_BOTTOM_MAX_WITH_SUBSCRIPT = 16, 1953 /** 1954 * spaceAfterScript 1955 */ 1956 SPACE_AFTER_SCRIPT = 17, 1957 /** 1958 * upperLimitGapMin 1959 */ 1960 UPPER_LIMIT_GAP_MIN = 18, 1961 /** 1962 * upperLimitBaselineRiseMin 1963 */ 1964 UPPER_LIMIT_BASELINE_RISE_MIN = 19, 1965 /** 1966 * lowerLimitGapMin 1967 */ 1968 LOWER_LIMIT_GAP_MIN = 20, 1969 /** 1970 * lowerLimitBaselineDropMin 1971 */ 1972 LOWER_LIMIT_BASELINE_DROP_MIN = 21, 1973 /** 1974 * stackTopShiftUp 1975 */ 1976 STACK_TOP_SHIFT_UP = 22, 1977 /** 1978 * stackTopDisplayStyleShiftUp 1979 */ 1980 STACK_TOP_DISPLAY_STYLE_SHIFT_UP = 23, 1981 /** 1982 * stackBottomShiftDown 1983 */ 1984 STACK_BOTTOM_SHIFT_DOWN = 24, 1985 /** 1986 * stackBottomDisplayStyleShiftDown 1987 */ 1988 STACK_BOTTOM_DISPLAY_STYLE_SHIFT_DOWN = 25, 1989 /** 1990 * stackGapMin 1991 */ 1992 STACK_GAP_MIN = 26, 1993 /** 1994 * stackDisplayStyleGapMin 1995 */ 1996 STACK_DISPLAY_STYLE_GAP_MIN = 27, 1997 /** 1998 * stretchStackTopShiftUp 1999 */ 2000 STRETCH_STACK_TOP_SHIFT_UP = 28, 2001 /** 2002 * stretchStackBottomShiftDown 2003 */ 2004 STRETCH_STACK_BOTTOM_SHIFT_DOWN = 29, 2005 /** 2006 * stretchStackGapAboveMin 2007 */ 2008 STRETCH_STACK_GAP_ABOVE_MIN = 30, 2009 /** 2010 * stretchStackGapBelowMin 2011 */ 2012 STRETCH_STACK_GAP_BELOW_MIN = 31, 2013 /** 2014 * fractionNumeratorShiftUp 2015 */ 2016 FRACTION_NUMERATOR_SHIFT_UP = 32, 2017 /** 2018 * fractionNumeratorDisplayStyleShiftUp 2019 */ 2020 FRACTION_NUMERATOR_DISPLAY_STYLE_SHIFT_UP = 33, 2021 /** 2022 * fractionDenominatorShiftDown 2023 */ 2024 FRACTION_DENOMINATOR_SHIFT_DOWN = 34, 2025 /** 2026 * fractionDenominatorDisplayStyleShiftDown 2027 */ 2028 FRACTION_DENOMINATOR_DISPLAY_STYLE_SHIFT_DOWN = 35, 2029 /** 2030 * fractionNumeratorGapMin 2031 */ 2032 FRACTION_NUMERATOR_GAP_MIN = 36, 2033 /** 2034 * fractionNumDisplayStyleGapMin 2035 */ 2036 FRACTION_NUM_DISPLAY_STYLE_GAP_MIN = 37, 2037 /** 2038 * fractionRuleThickness 2039 */ 2040 FRACTION_RULE_THICKNESS = 38, 2041 /** 2042 * fractionDenominatorGapMin 2043 */ 2044 FRACTION_DENOMINATOR_GAP_MIN = 39, 2045 /** 2046 * fractionDenomDisplayStyleGapMin 2047 */ 2048 FRACTION_DENOM_DISPLAY_STYLE_GAP_MIN = 40, 2049 /** 2050 * skewedFractionHorizontalGap 2051 */ 2052 SKEWED_FRACTION_HORIZONTAL_GAP = 41, 2053 /** 2054 * skewedFractionVerticalGap 2055 */ 2056 SKEWED_FRACTION_VERTICAL_GAP = 42, 2057 /** 2058 * overbarVerticalGap 2059 */ 2060 OVERBAR_VERTICAL_GAP = 43, 2061 /** 2062 * overbarRuleThickness 2063 */ 2064 OVERBAR_RULE_THICKNESS = 44, 2065 /** 2066 * overbarExtraAscender 2067 */ 2068 OVERBAR_EXTRA_ASCENDER = 45, 2069 /** 2070 * underbarVerticalGap 2071 */ 2072 UNDERBAR_VERTICAL_GAP = 46, 2073 /** 2074 * underbarRuleThickness 2075 */ 2076 UNDERBAR_RULE_THICKNESS = 47, 2077 /** 2078 * underbarExtraDescender 2079 */ 2080 UNDERBAR_EXTRA_DESCENDER = 48, 2081 /** 2082 * radicalVerticalGap 2083 */ 2084 RADICAL_VERTICAL_GAP = 49, 2085 /** 2086 * radicalDisplayStyleVerticalGap 2087 */ 2088 RADICAL_DISPLAY_STYLE_VERTICAL_GAP = 50, 2089 /** 2090 * radicalRuleThickness 2091 */ 2092 RADICAL_RULE_THICKNESS = 51, 2093 /** 2094 * radicalExtraAscender 2095 */ 2096 RADICAL_EXTRA_ASCENDER = 52, 2097 /** 2098 * radicalKernBeforeDegree 2099 */ 2100 RADICAL_KERN_BEFORE_DEGREE = 53, 2101 /** 2102 * radicalKernAfterDegree 2103 */ 2104 RADICAL_KERN_AFTER_DEGREE = 54, 2105 /** 2106 * radicalDegreeBottomRaisePercent 2107 */ 2108 RADICAL_DEGREE_BOTTOM_RAISE_PERCENT = 55, 2109 } 2110 alias hb_ot_math_constant_t ot_math_constant_t; 2111 2112 /** 2113 * Flags for math glyph parts. 2114 * 2115 * Since: 1.3.3 2116 */ 2117 public enum hb_ot_math_glyph_part_flags_t 2118 { 2119 /** 2120 * This is an extender glyph part that 2121 * can be repeated to reach the desired length. 2122 */ 2123 EXTENDER = 1, 2124 } 2125 alias hb_ot_math_glyph_part_flags_t ot_math_glyph_part_flags_t; 2126 2127 /** 2128 * The math kerning-table types defined for the four corners 2129 * of a glyph. 2130 * 2131 * Since: 1.3.3 2132 */ 2133 public enum hb_ot_math_kern_t 2134 { 2135 /** 2136 * The top right corner of the glyph. 2137 */ 2138 TOP_RIGHT = 0, 2139 /** 2140 * The top left corner of the glyph. 2141 */ 2142 TOP_LEFT = 1, 2143 /** 2144 * The bottom right corner of the glyph. 2145 */ 2146 BOTTOM_RIGHT = 2, 2147 /** 2148 * The bottom left corner of the glyph. 2149 */ 2150 BOTTOM_LEFT = 3, 2151 } 2152 alias hb_ot_math_kern_t ot_math_kern_t; 2153 2154 /** 2155 * Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta 2156 * 2157 * Since: 2.6.0 2158 */ 2159 public enum hb_ot_meta_tag_t 2160 { 2161 /** 2162 * Design languages. Text, using only 2163 * Basic Latin (ASCII) characters. Indicates languages and/or scripts 2164 * for the user audiences that the font was primarily designed for. 2165 */ 2166 DESIGN_LANGUAGES = 1684827751, 2167 /** 2168 * Supported languages. Text, using 2169 * only Basic Latin (ASCII) characters. Indicates languages and/or scripts 2170 * that the font is declared to be capable of supporting. 2171 */ 2172 SUPPORTED_LANGUAGES = 1936485991, 2173 } 2174 alias hb_ot_meta_tag_t ot_meta_tag_t; 2175 2176 /** 2177 * Metric tags corresponding to [MVAR Value 2178 * Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags) 2179 * 2180 * Since: 2.6.0 2181 */ 2182 public enum hb_ot_metrics_tag_t 2183 { 2184 /** 2185 * horizontal ascender. 2186 */ 2187 HORIZONTAL_ASCENDER = 1751216995, 2188 /** 2189 * horizontal descender. 2190 */ 2191 HORIZONTAL_DESCENDER = 1751413603, 2192 /** 2193 * horizontal line gap. 2194 */ 2195 HORIZONTAL_LINE_GAP = 1751934832, 2196 /** 2197 * horizontal clipping ascent. 2198 */ 2199 HORIZONTAL_CLIPPING_ASCENT = 1751346273, 2200 /** 2201 * horizontal clipping descent. 2202 */ 2203 HORIZONTAL_CLIPPING_DESCENT = 1751346276, 2204 /** 2205 * vertical ascender. 2206 */ 2207 VERTICAL_ASCENDER = 1986098019, 2208 /** 2209 * vertical descender. 2210 */ 2211 VERTICAL_DESCENDER = 1986294627, 2212 /** 2213 * vertical line gap. 2214 */ 2215 VERTICAL_LINE_GAP = 1986815856, 2216 /** 2217 * horizontal caret rise. 2218 */ 2219 HORIZONTAL_CARET_RISE = 1751347827, 2220 /** 2221 * horizontal caret run. 2222 */ 2223 HORIZONTAL_CARET_RUN = 1751347822, 2224 /** 2225 * horizontal caret offset. 2226 */ 2227 HORIZONTAL_CARET_OFFSET = 1751347046, 2228 /** 2229 * vertical caret rise. 2230 */ 2231 VERTICAL_CARET_RISE = 1986228851, 2232 /** 2233 * vertical caret run. 2234 */ 2235 VERTICAL_CARET_RUN = 1986228846, 2236 /** 2237 * vertical caret offset. 2238 */ 2239 VERTICAL_CARET_OFFSET = 1986228070, 2240 /** 2241 * x height. 2242 */ 2243 X_HEIGHT = 2020108148, 2244 /** 2245 * cap height. 2246 */ 2247 CAP_HEIGHT = 1668311156, 2248 /** 2249 * subscript em x size. 2250 */ 2251 SUBSCRIPT_EM_X_SIZE = 1935833203, 2252 /** 2253 * subscript em y size. 2254 */ 2255 SUBSCRIPT_EM_Y_SIZE = 1935833459, 2256 /** 2257 * subscript em x offset. 2258 */ 2259 SUBSCRIPT_EM_X_OFFSET = 1935833199, 2260 /** 2261 * subscript em y offset. 2262 */ 2263 SUBSCRIPT_EM_Y_OFFSET = 1935833455, 2264 /** 2265 * superscript em x size. 2266 */ 2267 SUPERSCRIPT_EM_X_SIZE = 1936750707, 2268 /** 2269 * superscript em y size. 2270 */ 2271 SUPERSCRIPT_EM_Y_SIZE = 1936750963, 2272 /** 2273 * superscript em x offset. 2274 */ 2275 SUPERSCRIPT_EM_X_OFFSET = 1936750703, 2276 /** 2277 * superscript em y offset. 2278 */ 2279 SUPERSCRIPT_EM_Y_OFFSET = 1936750959, 2280 /** 2281 * strikeout size. 2282 */ 2283 STRIKEOUT_SIZE = 1937011315, 2284 /** 2285 * strikeout offset. 2286 */ 2287 STRIKEOUT_OFFSET = 1937011311, 2288 /** 2289 * underline size. 2290 */ 2291 UNDERLINE_SIZE = 1970168947, 2292 /** 2293 * underline offset. 2294 */ 2295 UNDERLINE_OFFSET = 1970168943, 2296 } 2297 alias hb_ot_metrics_tag_t ot_metrics_tag_t; 2298 2299 /** 2300 * Flags for #hb_ot_var_axis_info_t. 2301 * 2302 * Since: 2.2.0 2303 */ 2304 public enum hb_ot_var_axis_flags_t 2305 { 2306 /** 2307 * The axis should not be exposed directly in user interfaces. 2308 */ 2309 HIDDEN = 1, 2310 } 2311 alias hb_ot_var_axis_flags_t ot_var_axis_flags_t; 2312 2313 /** 2314 * Data type for scripts. Each #hb_script_t's value is an #hb_tag_t corresponding 2315 * to the four-letter values defined by [ISO 15924](https://unicode.org/iso15924/). 2316 * 2317 * See also the Script (sc) property of the Unicode Character Database. 2318 */ 2319 public enum hb_script_t 2320 { 2321 /** 2322 * `Zyyy` 2323 */ 2324 COMMON = 1517910393, 2325 /** 2326 * `Zinh` 2327 */ 2328 INHERITED = 1516858984, 2329 /** 2330 * `Zzzz` 2331 */ 2332 UNKNOWN = 1517976186, 2333 /** 2334 * `Arab` 2335 */ 2336 ARABIC = 1098015074, 2337 /** 2338 * `Armn` 2339 */ 2340 ARMENIAN = 1098018158, 2341 /** 2342 * `Beng` 2343 */ 2344 BENGALI = 1113943655, 2345 /** 2346 * `Cyrl` 2347 */ 2348 CYRILLIC = 1132032620, 2349 /** 2350 * `Deva` 2351 */ 2352 DEVANAGARI = 1147500129, 2353 /** 2354 * `Geor` 2355 */ 2356 GEORGIAN = 1197830002, 2357 /** 2358 * `Grek` 2359 */ 2360 GREEK = 1198679403, 2361 /** 2362 * `Gujr` 2363 */ 2364 GUJARATI = 1198877298, 2365 /** 2366 * `Guru` 2367 */ 2368 GURMUKHI = 1198879349, 2369 /** 2370 * `Hang` 2371 */ 2372 HANGUL = 1214344807, 2373 /** 2374 * `Hani` 2375 */ 2376 HAN = 1214344809, 2377 /** 2378 * `Hebr` 2379 */ 2380 HEBREW = 1214603890, 2381 /** 2382 * `Hira` 2383 */ 2384 HIRAGANA = 1214870113, 2385 /** 2386 * `Knda` 2387 */ 2388 KANNADA = 1265525857, 2389 /** 2390 * `Kana` 2391 */ 2392 KATAKANA = 1264676449, 2393 /** 2394 * `Laoo` 2395 */ 2396 LAO = 1281453935, 2397 /** 2398 * `Latn` 2399 */ 2400 LATIN = 1281455214, 2401 /** 2402 * `Mlym` 2403 */ 2404 MALAYALAM = 1298954605, 2405 /** 2406 * `Orya` 2407 */ 2408 ORIYA = 1332902241, 2409 /** 2410 * `Taml` 2411 */ 2412 TAMIL = 1415671148, 2413 /** 2414 * `Telu` 2415 */ 2416 TELUGU = 1415933045, 2417 /** 2418 * `Thai` 2419 */ 2420 THAI = 1416126825, 2421 /** 2422 * `Tibt` 2423 */ 2424 TIBETAN = 1416192628, 2425 /** 2426 * `Bopo` 2427 */ 2428 BOPOMOFO = 1114599535, 2429 /** 2430 * `Brai` 2431 */ 2432 BRAILLE = 1114792297, 2433 /** 2434 * `Cans` 2435 */ 2436 CANADIAN_SYLLABICS = 1130458739, 2437 /** 2438 * `Cher` 2439 */ 2440 CHEROKEE = 1130915186, 2441 /** 2442 * `Ethi` 2443 */ 2444 ETHIOPIC = 1165256809, 2445 /** 2446 * `Khmr` 2447 */ 2448 KHMER = 1265134962, 2449 /** 2450 * `Mong` 2451 */ 2452 MONGOLIAN = 1299148391, 2453 /** 2454 * `Mymr` 2455 */ 2456 MYANMAR = 1299803506, 2457 /** 2458 * `Ogam` 2459 */ 2460 OGHAM = 1332175213, 2461 /** 2462 * `Runr` 2463 */ 2464 RUNIC = 1383427698, 2465 /** 2466 * `Sinh` 2467 */ 2468 SINHALA = 1399418472, 2469 /** 2470 * `Syrc` 2471 */ 2472 SYRIAC = 1400468067, 2473 /** 2474 * `Thaa` 2475 */ 2476 THAANA = 1416126817, 2477 /** 2478 * `Yiii` 2479 */ 2480 YI = 1500080489, 2481 /** 2482 * `Dsrt` 2483 */ 2484 DESERET = 1148416628, 2485 /** 2486 * `Goth` 2487 */ 2488 GOTHIC = 1198486632, 2489 /** 2490 * `Ital` 2491 */ 2492 OLD_ITALIC = 1232363884, 2493 /** 2494 * `Buhd` 2495 */ 2496 BUHID = 1114990692, 2497 /** 2498 * `Hano` 2499 */ 2500 HANUNOO = 1214344815, 2501 /** 2502 * `Tglg` 2503 */ 2504 TAGALOG = 1416064103, 2505 /** 2506 * `Tagb` 2507 */ 2508 TAGBANWA = 1415669602, 2509 /** 2510 * `Cprt` 2511 */ 2512 CYPRIOT = 1131442804, 2513 /** 2514 * `Limb` 2515 */ 2516 LIMBU = 1281977698, 2517 /** 2518 * `Linb` 2519 */ 2520 LINEAR_B = 1281977954, 2521 /** 2522 * `Osma` 2523 */ 2524 OSMANYA = 1332964705, 2525 /** 2526 * `Shaw` 2527 */ 2528 SHAVIAN = 1399349623, 2529 /** 2530 * `Tale` 2531 */ 2532 TAI_LE = 1415670885, 2533 /** 2534 * `Ugar` 2535 */ 2536 UGARITIC = 1432838514, 2537 /** 2538 * `Bugi` 2539 */ 2540 BUGINESE = 1114990441, 2541 /** 2542 * `Copt` 2543 */ 2544 COPTIC = 1131376756, 2545 /** 2546 * `Glag` 2547 */ 2548 GLAGOLITIC = 1198285159, 2549 /** 2550 * `Khar` 2551 */ 2552 KHAROSHTHI = 1265131890, 2553 /** 2554 * `Talu` 2555 */ 2556 NEW_TAI_LUE = 1415670901, 2557 /** 2558 * `Xpeo` 2559 */ 2560 OLD_PERSIAN = 1483761007, 2561 /** 2562 * `Sylo` 2563 */ 2564 SYLOTI_NAGRI = 1400466543, 2565 /** 2566 * `Tfng` 2567 */ 2568 TIFINAGH = 1415999079, 2569 /** 2570 * `Bali` 2571 */ 2572 BALINESE = 1113681001, 2573 /** 2574 * `Xsux` 2575 */ 2576 CUNEIFORM = 1483961720, 2577 /** 2578 * `Nkoo` 2579 */ 2580 NKO = 1315663727, 2581 /** 2582 * `Phag` 2583 */ 2584 PHAGS_PA = 1349017959, 2585 /** 2586 * `Phnx` 2587 */ 2588 PHOENICIAN = 1349021304, 2589 /** 2590 * `Cari` 2591 */ 2592 CARIAN = 1130459753, 2593 /** 2594 * `Cham` 2595 */ 2596 CHAM = 1130914157, 2597 /** 2598 * `Kali` 2599 */ 2600 KAYAH_LI = 1264675945, 2601 /** 2602 * `Lepc` 2603 */ 2604 LEPCHA = 1281716323, 2605 /** 2606 * `Lyci` 2607 */ 2608 LYCIAN = 1283023721, 2609 /** 2610 * `Lydi` 2611 */ 2612 LYDIAN = 1283023977, 2613 /** 2614 * `Olck` 2615 */ 2616 OL_CHIKI = 1332503403, 2617 /** 2618 * `Rjng` 2619 */ 2620 REJANG = 1382706791, 2621 /** 2622 * `Saur` 2623 */ 2624 SAURASHTRA = 1398895986, 2625 /** 2626 * `Sund` 2627 */ 2628 SUNDANESE = 1400204900, 2629 /** 2630 * `Vaii` 2631 */ 2632 VAI = 1449224553, 2633 /** 2634 * `Avst` 2635 */ 2636 AVESTAN = 1098281844, 2637 /** 2638 * `Bamu` 2639 */ 2640 BAMUM = 1113681269, 2641 /** 2642 * `Egyp` 2643 */ 2644 EGYPTIAN_HIEROGLYPHS = 1164409200, 2645 /** 2646 * `Armi` 2647 */ 2648 IMPERIAL_ARAMAIC = 1098018153, 2649 /** 2650 * `Phli` 2651 */ 2652 INSCRIPTIONAL_PAHLAVI = 1349020777, 2653 /** 2654 * `Prti` 2655 */ 2656 INSCRIPTIONAL_PARTHIAN = 1349678185, 2657 /** 2658 * `Java` 2659 */ 2660 JAVANESE = 1247901281, 2661 /** 2662 * `Kthi` 2663 */ 2664 KAITHI = 1265920105, 2665 /** 2666 * `Lisu` 2667 */ 2668 LISU = 1281979253, 2669 /** 2670 * `Mtei` 2671 */ 2672 MEETEI_MAYEK = 1299473769, 2673 /** 2674 * `Sarb` 2675 */ 2676 OLD_SOUTH_ARABIAN = 1398895202, 2677 /** 2678 * `Orkh` 2679 */ 2680 OLD_TURKIC = 1332898664, 2681 /** 2682 * `Samr` 2683 */ 2684 SAMARITAN = 1398893938, 2685 /** 2686 * `Lana` 2687 */ 2688 TAI_THAM = 1281453665, 2689 /** 2690 * `Tavt` 2691 */ 2692 TAI_VIET = 1415673460, 2693 /** 2694 * `Batk` 2695 */ 2696 BATAK = 1113683051, 2697 /** 2698 * `Brah` 2699 */ 2700 BRAHMI = 1114792296, 2701 /** 2702 * `Mand` 2703 */ 2704 MANDAIC = 1298230884, 2705 /** 2706 * `Cakm` 2707 */ 2708 CHAKMA = 1130457965, 2709 /** 2710 * `Merc` 2711 */ 2712 MEROITIC_CURSIVE = 1298494051, 2713 /** 2714 * `Mero` 2715 */ 2716 MEROITIC_HIEROGLYPHS = 1298494063, 2717 /** 2718 * `Plrd` 2719 */ 2720 MIAO = 1349284452, 2721 /** 2722 * `Shrd` 2723 */ 2724 SHARADA = 1399353956, 2725 /** 2726 * `Sora` 2727 */ 2728 SORA_SOMPENG = 1399812705, 2729 /** 2730 * `Takr` 2731 */ 2732 TAKRI = 1415670642, 2733 /** 2734 * `Bass`, Since: 0.9.30 2735 */ 2736 BASSA_VAH = 1113682803, 2737 /** 2738 * `Aghb`, Since: 0.9.30 2739 */ 2740 CAUCASIAN_ALBANIAN = 1097295970, 2741 /** 2742 * `Dupl`, Since: 0.9.30 2743 */ 2744 DUPLOYAN = 1148547180, 2745 /** 2746 * `Elba`, Since: 0.9.30 2747 */ 2748 ELBASAN = 1164730977, 2749 /** 2750 * `Gran`, Since: 0.9.30 2751 */ 2752 GRANTHA = 1198678382, 2753 /** 2754 * `Khoj`, Since: 0.9.30 2755 */ 2756 KHOJKI = 1265135466, 2757 /** 2758 * `Sind`, Since: 0.9.30 2759 */ 2760 KHUDAWADI = 1399418468, 2761 /** 2762 * `Lina`, Since: 0.9.30 2763 */ 2764 LINEAR_A = 1281977953, 2765 /** 2766 * `Mahj`, Since: 0.9.30 2767 */ 2768 MAHAJANI = 1298229354, 2769 /** 2770 * `Mani`, Since: 0.9.30 2771 */ 2772 MANICHAEAN = 1298230889, 2773 /** 2774 * `Mend`, Since: 0.9.30 2775 */ 2776 MENDE_KIKAKUI = 1298493028, 2777 /** 2778 * `Modi`, Since: 0.9.30 2779 */ 2780 MODI = 1299145833, 2781 /** 2782 * `Mroo`, Since: 0.9.30 2783 */ 2784 MRO = 1299345263, 2785 /** 2786 * `Nbat`, Since: 0.9.30 2787 */ 2788 NABATAEAN = 1315070324, 2789 /** 2790 * `Narb`, Since: 0.9.30 2791 */ 2792 OLD_NORTH_ARABIAN = 1315009122, 2793 /** 2794 * `Perm`, Since: 0.9.30 2795 */ 2796 OLD_PERMIC = 1348825709, 2797 /** 2798 * `Hmng`, Since: 0.9.30 2799 */ 2800 PAHAWH_HMONG = 1215131239, 2801 /** 2802 * `Palm`, Since: 0.9.30 2803 */ 2804 PALMYRENE = 1348562029, 2805 /** 2806 * `Pauc`, Since: 0.9.30 2807 */ 2808 PAU_CIN_HAU = 1348564323, 2809 /** 2810 * `Phlp`, Since: 0.9.30 2811 */ 2812 PSALTER_PAHLAVI = 1349020784, 2813 /** 2814 * `Sidd`, Since: 0.9.30 2815 */ 2816 SIDDHAM = 1399415908, 2817 /** 2818 * `Tirh`, Since: 0.9.30 2819 */ 2820 TIRHUTA = 1416196712, 2821 /** 2822 * `Wara`, Since: 0.9.30 2823 */ 2824 WARANG_CITI = 1466004065, 2825 /** 2826 * `Ahom`, Since: 0.9.30 2827 */ 2828 AHOM = 1097363309, 2829 /** 2830 * `Hluw`, Since: 0.9.30 2831 */ 2832 ANATOLIAN_HIEROGLYPHS = 1215067511, 2833 /** 2834 * `Hatr`, Since: 0.9.30 2835 */ 2836 HATRAN = 1214346354, 2837 /** 2838 * `Mult`, Since: 0.9.30 2839 */ 2840 MULTANI = 1299541108, 2841 /** 2842 * `Hung`, Since: 0.9.30 2843 */ 2844 OLD_HUNGARIAN = 1215655527, 2845 /** 2846 * `Sgnw`, Since: 0.9.30 2847 */ 2848 SIGNWRITING = 1399287415, 2849 /** 2850 * `Adlm`, Since: 1.3.0 2851 */ 2852 ADLAM = 1097100397, 2853 /** 2854 * `Bhks`, Since: 1.3.0 2855 */ 2856 BHAIKSUKI = 1114139507, 2857 /** 2858 * `Marc`, Since: 1.3.0 2859 */ 2860 MARCHEN = 1298231907, 2861 /** 2862 * `Osge`, Since: 1.3.0 2863 */ 2864 OSAGE = 1332963173, 2865 /** 2866 * `Tang`, Since: 1.3.0 2867 */ 2868 TANGUT = 1415671399, 2869 /** 2870 * `Newa`, Since: 1.3.0 2871 */ 2872 NEWA = 1315272545, 2873 /** 2874 * `Gonm`, Since: 1.6.0 2875 */ 2876 MASARAM_GONDI = 1198485101, 2877 /** 2878 * `Nshu`, Since: 1.6.0 2879 */ 2880 NUSHU = 1316186229, 2881 /** 2882 * `Soyo`, Since: 1.6.0 2883 */ 2884 SOYOMBO = 1399814511, 2885 /** 2886 * `Zanb`, Since: 1.6.0 2887 */ 2888 ZANABAZAR_SQUARE = 1516334690, 2889 /** 2890 * `Dogr`, Since: 1.8.0 2891 */ 2892 DOGRA = 1148151666, 2893 /** 2894 * `Gong`, Since: 1.8.0 2895 */ 2896 GUNJALA_GONDI = 1198485095, 2897 /** 2898 * `Rohg`, Since: 1.8.0 2899 */ 2900 HANIFI_ROHINGYA = 1383032935, 2901 /** 2902 * `Maka`, Since: 1.8.0 2903 */ 2904 MAKASAR = 1298230113, 2905 /** 2906 * `Medf`, Since: 1.8.0 2907 */ 2908 MEDEFAIDRIN = 1298490470, 2909 /** 2910 * `Sogo`, Since: 1.8.0 2911 */ 2912 OLD_SOGDIAN = 1399809903, 2913 /** 2914 * `Sogd`, Since: 1.8.0 2915 */ 2916 SOGDIAN = 1399809892, 2917 /** 2918 * `Elym`, Since: 2.4.0 2919 */ 2920 ELYMAIC = 1164736877, 2921 /** 2922 * `Nand`, Since: 2.4.0 2923 */ 2924 NANDINAGARI = 1315008100, 2925 /** 2926 * `Hmnp`, Since: 2.4.0 2927 */ 2928 NYIAKENG_PUACHUE_HMONG = 1215131248, 2929 /** 2930 * `Wcho`, Since: 2.4.0 2931 */ 2932 WANCHO = 1466132591, 2933 /** 2934 * `Chrs`, Since: 2.6.7 2935 */ 2936 CHORASMIAN = 1130918515, 2937 /** 2938 * `Diak`, Since: 2.6.7 2939 */ 2940 DIVES_AKURU = 1147756907, 2941 /** 2942 * `Kits`, Since: 2.6.7 2943 */ 2944 KHITAN_SMALL_SCRIPT = 1265202291, 2945 /** 2946 * `Yezi`, Since: 2.6.7 2947 */ 2948 YEZIDI = 1499822697, 2949 /** 2950 * `Cpmn`, Since: 3.0.0 2951 */ 2952 CYPRO_MINOAN = 1131441518, 2953 /** 2954 * `Ougr`, Since: 3.0.0 2955 */ 2956 OLD_UYGHUR = 1333094258, 2957 /** 2958 * `Tnsa`, Since: 3.0.0 2959 */ 2960 TANGSA = 1416524641, 2961 /** 2962 * `Toto`, Since: 3.0.0 2963 */ 2964 TOTO = 1416590447, 2965 /** 2966 * `Vith`, Since: 3.0.0 2967 */ 2968 VITHKUQI = 1449751656, 2969 /** 2970 * `Zmth`, Since: 3.4.0 2971 */ 2972 MATH = 1517122664, 2973 /** 2974 * No script set 2975 */ 2976 INVALID = 0, 2977 } 2978 alias hb_script_t script_t; 2979 2980 /** 2981 * Defined by [OpenType Design-Variation Axis Tag Registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg). 2982 * 2983 * Since: 3.0.0 2984 */ 2985 public enum hb_style_tag_t 2986 { 2987 /** 2988 * Used to vary between non-italic and italic. 2989 * A value of 0 can be interpreted as "Roman" (non-italic); a value of 1 can 2990 * be interpreted as (fully) italic. 2991 */ 2992 ITALIC = 1769234796, 2993 /** 2994 * Used to vary design to suit different text sizes. 2995 * Non-zero. Values can be interpreted as text size, in points. 2996 */ 2997 OPTICAL_SIZE = 1869640570, 2998 /** 2999 * Used to vary between upright and slanted text. Values 3000 * must be greater than -90 and less than +90. Values can be interpreted as 3001 * the angle, in counter-clockwise degrees, of oblique slant from whatever the 3002 * designer considers to be upright for that font design. Typical right-leaning 3003 * Italic fonts have a negative slant angle (typically around -12) 3004 */ 3005 SLANT_ANGLE = 1936486004, 3006 /** 3007 * same as @HB_STYLE_TAG_SLANT_ANGLE expression as ratio. 3008 * Typical right-leaning Italic fonts have a positive slant ratio (typically around 0.2) 3009 */ 3010 SLANT_RATIO = 1399615092, 3011 /** 3012 * Used to vary width of text from narrower to wider. 3013 * Non-zero. Values can be interpreted as a percentage of whatever the font 3014 * designer considers “normal width” for that font design. 3015 */ 3016 WIDTH = 2003072104, 3017 /** 3018 * Used to vary stroke thicknesses or other design details 3019 * to give variation from lighter to blacker. Values can be interpreted in direct 3020 * comparison to values for usWeightClass in the OS/2 table, 3021 * or the CSS font-weight property. 3022 */ 3023 WEIGHT = 2003265652, 3024 } 3025 alias hb_style_tag_t style_tag_t; 3026 3027 /** 3028 * Data type for the Canonical_Combining_Class (ccc) property 3029 * from the Unicode Character Database. 3030 * 3031 * <note>Note: newer versions of Unicode may add new values. 3032 * Client programs should be ready to handle any value in the 0..254 range 3033 * being returned from hb_unicode_combining_class().</note> 3034 */ 3035 public enum hb_unicode_combining_class_t 3036 { 3037 /** 3038 * Spacing and enclosing marks; also many vowel and consonant signs, even if nonspacing 3039 */ 3040 NOT_REORDERED = 0, 3041 /** 3042 * Marks which overlay a base letter or symbol 3043 */ 3044 OVERLAY = 1, 3045 /** 3046 * Diacritic nukta marks in Brahmi-derived scripts 3047 */ 3048 NUKTA = 7, 3049 /** 3050 * Hiragana/Katakana voicing marks 3051 */ 3052 KANA_VOICING = 8, 3053 /** 3054 * Viramas 3055 */ 3056 VIRAMA = 9, 3057 /** 3058 * [Hebrew] 3059 */ 3060 CCC10 = 10, 3061 /** 3062 * [Hebrew] 3063 */ 3064 CCC11 = 11, 3065 /** 3066 * [Hebrew] 3067 */ 3068 CCC12 = 12, 3069 /** 3070 * [Hebrew] 3071 */ 3072 CCC13 = 13, 3073 /** 3074 * [Hebrew] 3075 */ 3076 CCC14 = 14, 3077 /** 3078 * [Hebrew] 3079 */ 3080 CCC15 = 15, 3081 /** 3082 * [Hebrew] 3083 */ 3084 CCC16 = 16, 3085 /** 3086 * [Hebrew] 3087 */ 3088 CCC17 = 17, 3089 /** 3090 * [Hebrew] 3091 */ 3092 CCC18 = 18, 3093 /** 3094 * [Hebrew] 3095 */ 3096 CCC19 = 19, 3097 /** 3098 * [Hebrew] 3099 */ 3100 CCC20 = 20, 3101 /** 3102 * [Hebrew] 3103 */ 3104 CCC21 = 21, 3105 /** 3106 * [Hebrew] 3107 */ 3108 CCC22 = 22, 3109 /** 3110 * [Hebrew] 3111 */ 3112 CCC23 = 23, 3113 /** 3114 * [Hebrew] 3115 */ 3116 CCC24 = 24, 3117 /** 3118 * [Hebrew] 3119 */ 3120 CCC25 = 25, 3121 /** 3122 * [Hebrew] 3123 */ 3124 CCC26 = 26, 3125 /** 3126 * [Arabic] 3127 */ 3128 CCC27 = 27, 3129 /** 3130 * [Arabic] 3131 */ 3132 CCC28 = 28, 3133 /** 3134 * [Arabic] 3135 */ 3136 CCC29 = 29, 3137 /** 3138 * [Arabic] 3139 */ 3140 CCC30 = 30, 3141 /** 3142 * [Arabic] 3143 */ 3144 CCC31 = 31, 3145 /** 3146 * [Arabic] 3147 */ 3148 CCC32 = 32, 3149 /** 3150 * [Arabic] 3151 */ 3152 CCC33 = 33, 3153 /** 3154 * [Arabic] 3155 */ 3156 CCC34 = 34, 3157 /** 3158 * [Arabic] 3159 */ 3160 CCC35 = 35, 3161 /** 3162 * [Syriac] 3163 */ 3164 CCC36 = 36, 3165 /** 3166 * [Telugu] 3167 */ 3168 CCC84 = 84, 3169 /** 3170 * [Telugu] 3171 */ 3172 CCC91 = 91, 3173 /** 3174 * [Thai] 3175 */ 3176 CCC103 = 103, 3177 /** 3178 * [Thai] 3179 */ 3180 CCC107 = 107, 3181 /** 3182 * [Lao] 3183 */ 3184 CCC118 = 118, 3185 /** 3186 * [Lao] 3187 */ 3188 CCC122 = 122, 3189 /** 3190 * [Tibetan] 3191 */ 3192 CCC129 = 129, 3193 /** 3194 * [Tibetan] 3195 */ 3196 CCC130 = 130, 3197 /** 3198 * [Tibetan] 3199 */ 3200 CCC133 = 132, 3201 /** 3202 * Marks attached at the bottom left 3203 */ 3204 ATTACHED_BELOW_LEFT = 200, 3205 /** 3206 * Marks attached directly below 3207 */ 3208 ATTACHED_BELOW = 202, 3209 /** 3210 * Marks attached directly above 3211 */ 3212 ATTACHED_ABOVE = 214, 3213 /** 3214 * Marks attached at the top right 3215 */ 3216 ATTACHED_ABOVE_RIGHT = 216, 3217 /** 3218 * Distinct marks at the bottom left 3219 */ 3220 BELOW_LEFT = 218, 3221 /** 3222 * Distinct marks directly below 3223 */ 3224 BELOW = 220, 3225 /** 3226 * Distinct marks at the bottom right 3227 */ 3228 BELOW_RIGHT = 222, 3229 /** 3230 * Distinct marks to the left 3231 */ 3232 LEFT = 224, 3233 /** 3234 * Distinct marks to the right 3235 */ 3236 RIGHT = 226, 3237 /** 3238 * Distinct marks at the top left 3239 */ 3240 ABOVE_LEFT = 228, 3241 /** 3242 * Distinct marks directly above 3243 */ 3244 ABOVE = 230, 3245 /** 3246 * Distinct marks at the top right 3247 */ 3248 ABOVE_RIGHT = 232, 3249 /** 3250 * Distinct marks subtending two bases 3251 */ 3252 DOUBLE_BELOW = 233, 3253 /** 3254 * Distinct marks extending above two bases 3255 */ 3256 DOUBLE_ABOVE = 234, 3257 /** 3258 * Greek iota subscript only 3259 */ 3260 IOTA_SUBSCRIPT = 240, 3261 /** 3262 * Invalid combining class 3263 */ 3264 INVALID = 255, 3265 } 3266 alias hb_unicode_combining_class_t unicode_combining_class_t; 3267 3268 /** 3269 * Data type for the "General_Category" (gc) property from 3270 * the Unicode Character Database. 3271 */ 3272 public enum hb_unicode_general_category_t 3273 { 3274 /** 3275 * [Cc] 3276 */ 3277 CONTROL = 0, 3278 /** 3279 * [Cf] 3280 */ 3281 FORMAT = 1, 3282 /** 3283 * [Cn] 3284 */ 3285 UNASSIGNED = 2, 3286 /** 3287 * [Co] 3288 */ 3289 PRIVATE_USE = 3, 3290 /** 3291 * [Cs] 3292 */ 3293 SURROGATE = 4, 3294 /** 3295 * [Ll] 3296 */ 3297 LOWERCASE_LETTER = 5, 3298 /** 3299 * [Lm] 3300 */ 3301 MODIFIER_LETTER = 6, 3302 /** 3303 * [Lo] 3304 */ 3305 OTHER_LETTER = 7, 3306 /** 3307 * [Lt] 3308 */ 3309 TITLECASE_LETTER = 8, 3310 /** 3311 * [Lu] 3312 */ 3313 UPPERCASE_LETTER = 9, 3314 /** 3315 * [Mc] 3316 */ 3317 SPACING_MARK = 10, 3318 /** 3319 * [Me] 3320 */ 3321 ENCLOSING_MARK = 11, 3322 /** 3323 * [Mn] 3324 */ 3325 NON_SPACING_MARK = 12, 3326 /** 3327 * [Nd] 3328 */ 3329 DECIMAL_NUMBER = 13, 3330 /** 3331 * [Nl] 3332 */ 3333 LETTER_NUMBER = 14, 3334 /** 3335 * [No] 3336 */ 3337 OTHER_NUMBER = 15, 3338 /** 3339 * [Pc] 3340 */ 3341 CONNECT_PUNCTUATION = 16, 3342 /** 3343 * [Pd] 3344 */ 3345 DASH_PUNCTUATION = 17, 3346 /** 3347 * [Pe] 3348 */ 3349 CLOSE_PUNCTUATION = 18, 3350 /** 3351 * [Pf] 3352 */ 3353 FINAL_PUNCTUATION = 19, 3354 /** 3355 * [Pi] 3356 */ 3357 INITIAL_PUNCTUATION = 20, 3358 /** 3359 * [Po] 3360 */ 3361 OTHER_PUNCTUATION = 21, 3362 /** 3363 * [Ps] 3364 */ 3365 OPEN_PUNCTUATION = 22, 3366 /** 3367 * [Sc] 3368 */ 3369 CURRENCY_SYMBOL = 23, 3370 /** 3371 * [Sk] 3372 */ 3373 MODIFIER_SYMBOL = 24, 3374 /** 3375 * [Sm] 3376 */ 3377 MATH_SYMBOL = 25, 3378 /** 3379 * [So] 3380 */ 3381 OTHER_SYMBOL = 26, 3382 /** 3383 * [Zl] 3384 */ 3385 LINE_SEPARATOR = 27, 3386 /** 3387 * [Zp] 3388 */ 3389 PARAGRAPH_SEPARATOR = 28, 3390 /** 3391 * [Zs] 3392 */ 3393 SPACE_SEPARATOR = 29, 3394 } 3395 alias hb_unicode_general_category_t unicode_general_category_t; 3396 3397 /** 3398 * Structure representing a setting for an #hb_aat_layout_feature_type_t. 3399 */ 3400 struct hb_aat_layout_feature_selector_info_t 3401 { 3402 /** 3403 * The selector's name identifier 3404 */ 3405 hb_ot_name_id_t nameId; 3406 /** 3407 * The value to turn the selector on 3408 */ 3409 hb_aat_layout_feature_selector_t enable; 3410 /** 3411 * The value to turn the selector off 3412 */ 3413 hb_aat_layout_feature_selector_t disable; 3414 uint reserved; 3415 } 3416 3417 /** 3418 * Data type for blobs. A blob wraps a chunk of binary 3419 * data and facilitates its lifecycle management between 3420 * a client program and HarfBuzz. 3421 */ 3422 struct hb_blob_t; 3423 3424 /** 3425 * The main structure holding the input text and its properties before shaping, 3426 * and output glyphs and their information after shaping. 3427 */ 3428 struct hb_buffer_t; 3429 3430 /** 3431 * Glyph draw callbacks. 3432 * 3433 * #hb_draw_move_to_func_t, #hb_draw_line_to_func_t and 3434 * #hb_draw_cubic_to_func_t calls are necessary to be defined but we translate 3435 * #hb_draw_quadratic_to_func_t calls to #hb_draw_cubic_to_func_t if the 3436 * callback isn't defined. 3437 * 3438 * Since: 4.0.0 3439 */ 3440 struct hb_draw_funcs_t; 3441 3442 /** 3443 * Current drawing state. 3444 * 3445 * Since: 4.0.0 3446 */ 3447 struct hb_draw_state_t 3448 { 3449 /** 3450 * Whether there is an open path 3451 */ 3452 hb_bool_t pathOpen; 3453 /** 3454 * X component of the start of current path 3455 */ 3456 float pathStartX; 3457 /** 3458 * Y component of the start of current path 3459 */ 3460 float pathStartY; 3461 /** 3462 * X component of current point 3463 */ 3464 float currentX; 3465 /** 3466 * Y component of current point 3467 */ 3468 float currentY; 3469 hb_var_num_t reserved1; 3470 hb_var_num_t reserved2; 3471 hb_var_num_t reserved3; 3472 hb_var_num_t reserved4; 3473 hb_var_num_t reserved5; 3474 hb_var_num_t reserved6; 3475 hb_var_num_t reserved7; 3476 } 3477 3478 /** 3479 * Data type for holding font faces. 3480 */ 3481 struct hb_face_t; 3482 3483 struct hb_feature_t 3484 { 3485 /** 3486 * The #hb_tag_t tag of the feature 3487 */ 3488 hb_tag_t tag; 3489 /** 3490 * The value of the feature. 0 disables the feature, non-zero (usually 3491 * 1) enables the feature. For features implemented as lookup type 3 (like 3492 * 'salt') the @value is a one based index into the alternates. 3493 */ 3494 uint value; 3495 /** 3496 * the cluster to start applying this feature setting (inclusive). 3497 */ 3498 uint start; 3499 /** 3500 * the cluster to end applying this feature setting (exclusive). 3501 */ 3502 uint end; 3503 } 3504 3505 /** 3506 * Font-wide extent values, measured in font units. 3507 * 3508 * Note that typically @ascender is positive and @descender 3509 * negative, in coordinate systems that grow up. 3510 */ 3511 struct hb_font_extents_t 3512 { 3513 /** 3514 * The height of typographic ascenders. 3515 */ 3516 hb_position_t ascender; 3517 /** 3518 * The depth of typographic descenders. 3519 */ 3520 hb_position_t descender; 3521 /** 3522 * The suggested line-spacing gap. 3523 */ 3524 hb_position_t lineGap; 3525 hb_position_t reserved9; 3526 hb_position_t reserved8; 3527 hb_position_t reserved7; 3528 hb_position_t reserved6; 3529 hb_position_t reserved5; 3530 hb_position_t reserved4; 3531 hb_position_t reserved3; 3532 hb_position_t reserved2; 3533 hb_position_t reserved1; 3534 } 3535 3536 /** 3537 * Data type containing a set of virtual methods used for 3538 * working on #hb_font_t font objects. 3539 * 3540 * HarfBuzz provides a lightweight default function for each of 3541 * the methods in #hb_font_funcs_t. Client programs can implement 3542 * their own replacements for the individual font functions, as 3543 * needed, and replace the default by calling the setter for a 3544 * method. 3545 */ 3546 struct hb_font_funcs_t; 3547 3548 /** 3549 * Data type for holding fonts. 3550 */ 3551 struct hb_font_t; 3552 3553 /** 3554 * Glyph extent values, measured in font units. 3555 * 3556 * Note that @height is negative, in coordinate systems that grow up. 3557 */ 3558 struct hb_glyph_extents_t 3559 { 3560 /** 3561 * Distance from the x-origin to the left extremum of the glyph. 3562 */ 3563 hb_position_t xBearing; 3564 /** 3565 * Distance from the top extremum of the glyph to the y-origin. 3566 */ 3567 hb_position_t yBearing; 3568 /** 3569 * Distance from the left extremum of the glyph to the right extremum. 3570 */ 3571 hb_position_t width; 3572 /** 3573 * Distance from the top extremum of the glyph to the bottom extremum. 3574 */ 3575 hb_position_t height; 3576 } 3577 3578 /** 3579 * The #hb_glyph_info_t is the structure that holds information about the 3580 * glyphs and their relation to input text. 3581 */ 3582 struct hb_glyph_info_t 3583 { 3584 /** 3585 * either a Unicode code point (before shaping) or a glyph index 3586 * (after shaping). 3587 */ 3588 hb_codepoint_t codepoint; 3589 hb_mask_t mask; 3590 /** 3591 * the index of the character in the original text that corresponds 3592 * to this #hb_glyph_info_t, or whatever the client passes to 3593 * hb_buffer_add(). More than one #hb_glyph_info_t can have the same 3594 * @cluster value, if they resulted from the same character (e.g. one 3595 * to many glyph substitution), and when more than one character gets 3596 * merged in the same glyph (e.g. many to one glyph substitution) the 3597 * #hb_glyph_info_t will have the smallest cluster value of them. 3598 * By default some characters are merged into the same cluster 3599 * (e.g. combining marks have the same cluster as their bases) 3600 * even if they are separate glyphs, hb_buffer_set_cluster_level() 3601 * allow selecting more fine-grained cluster handling. 3602 */ 3603 uint cluster; 3604 hb_var_int_t var1; 3605 hb_var_int_t var2; 3606 } 3607 3608 /** 3609 * The #hb_glyph_position_t is the structure that holds the positions of the 3610 * glyph in both horizontal and vertical directions. All positions in 3611 * #hb_glyph_position_t are relative to the current point. 3612 */ 3613 struct hb_glyph_position_t 3614 { 3615 /** 3616 * how much the line advances after drawing this glyph when setting 3617 * text in horizontal direction. 3618 */ 3619 hb_position_t xAdvance; 3620 /** 3621 * how much the line advances after drawing this glyph when setting 3622 * text in vertical direction. 3623 */ 3624 hb_position_t yAdvance; 3625 /** 3626 * how much the glyph moves on the X-axis before drawing it, this 3627 * should not affect how much the line advances. 3628 */ 3629 hb_position_t xOffset; 3630 /** 3631 * how much the glyph moves on the Y-axis before drawing it, this 3632 * should not affect how much the line advances. 3633 */ 3634 hb_position_t yOffset; 3635 hb_var_int_t var; 3636 } 3637 3638 /** 3639 * Data type for holding integer-to-integer hash maps. 3640 */ 3641 struct hb_map_t; 3642 3643 /** 3644 * Pairs of glyph and color index. 3645 * 3646 * Since: 2.1.0 3647 */ 3648 struct hb_ot_color_layer_t 3649 { 3650 /** 3651 * the glyph ID of the layer 3652 */ 3653 hb_codepoint_t glyph; 3654 /** 3655 * the palette color index of the layer 3656 */ 3657 uint colorIndex; 3658 } 3659 3660 /** 3661 * Data type to hold information for a "part" component of a math-variant glyph. 3662 * Large variants for stretchable math glyphs (such as parentheses) can be constructed 3663 * on the fly from parts. 3664 * 3665 * Since: 1.3.3 3666 */ 3667 struct hb_ot_math_glyph_part_t 3668 { 3669 /** 3670 * The glyph index of the variant part 3671 */ 3672 hb_codepoint_t glyph; 3673 /** 3674 * The length of the connector on the starting side of the variant part 3675 */ 3676 hb_position_t startConnectorLength; 3677 /** 3678 * The length of the connector on the ending side of the variant part 3679 */ 3680 hb_position_t endConnectorLength; 3681 /** 3682 * The total advance of the part 3683 */ 3684 hb_position_t fullAdvance; 3685 /** 3686 * #hb_ot_math_glyph_part_flags_t flags for the part 3687 */ 3688 hb_ot_math_glyph_part_flags_t flags; 3689 } 3690 3691 /** 3692 * Data type to hold math-variant information for a glyph. 3693 * 3694 * Since: 1.3.3 3695 */ 3696 struct hb_ot_math_glyph_variant_t 3697 { 3698 /** 3699 * The glyph index of the variant 3700 */ 3701 hb_codepoint_t glyph; 3702 /** 3703 * The advance width of the variant 3704 */ 3705 hb_position_t advance; 3706 } 3707 3708 /** 3709 * Data type to hold math kerning (cut-in) information for a glyph. 3710 * 3711 * Since: 3.4.0 3712 */ 3713 struct hb_ot_math_kern_entry_t 3714 { 3715 /** 3716 * The maximum height at which this entry should be used 3717 */ 3718 hb_position_t maxCorrectionHeight; 3719 /** 3720 * The kern value of the entry 3721 */ 3722 hb_position_t kernValue; 3723 } 3724 3725 /** 3726 * Structure representing a name ID in a particular language. 3727 * 3728 * Since: 2.1.0 3729 */ 3730 struct hb_ot_name_entry_t 3731 { 3732 /** 3733 * name ID 3734 */ 3735 hb_ot_name_id_t nameId; 3736 hb_var_int_t var; 3737 /** 3738 * language 3739 */ 3740 hb_language_t language; 3741 } 3742 3743 /** 3744 * Data type for holding variation-axis values. 3745 * 3746 * The minimum, default, and maximum values are in un-normalized, user scales. 3747 * 3748 * <note>Note: at present, the only flag defined for @flags is 3749 * #HB_OT_VAR_AXIS_FLAG_HIDDEN.</note> 3750 * 3751 * Since: 2.2.0 3752 */ 3753 struct hb_ot_var_axis_info_t 3754 { 3755 /** 3756 * Index of the axis in the variation-axis array 3757 */ 3758 uint axisIndex; 3759 /** 3760 * The #hb_tag_t tag identifying the design variation of the axis 3761 */ 3762 hb_tag_t tag; 3763 /** 3764 * The `name` table Name ID that provides display names for the axis 3765 */ 3766 hb_ot_name_id_t nameId; 3767 /** 3768 * The #hb_ot_var_axis_flags_t flags for the axis 3769 */ 3770 hb_ot_var_axis_flags_t flags; 3771 /** 3772 * The minimum value on the variation axis that the font covers 3773 */ 3774 float minValue; 3775 /** 3776 * The position on the variation axis corresponding to the font's defaults 3777 */ 3778 float defaultValue; 3779 /** 3780 * The maximum value on the variation axis that the font covers 3781 */ 3782 float maxValue; 3783 uint reserved; 3784 } 3785 3786 /** 3787 * Use #hb_ot_var_axis_info_t instead. 3788 * 3789 * Since: 1.4.2 3790 */ 3791 struct hb_ot_var_axis_t 3792 { 3793 /** 3794 * axis tag 3795 */ 3796 hb_tag_t tag; 3797 /** 3798 * axis name identifier 3799 */ 3800 hb_ot_name_id_t nameId; 3801 /** 3802 * minimum value of the axis 3803 */ 3804 float minValue; 3805 /** 3806 * default value of the axis 3807 */ 3808 float defaultValue; 3809 /** 3810 * maximum value of the axis 3811 */ 3812 float maxValue; 3813 } 3814 3815 /** 3816 * The structure that holds various text properties of an #hb_buffer_t. Can be 3817 * set and retrieved using hb_buffer_set_segment_properties() and 3818 * hb_buffer_get_segment_properties(), respectively. 3819 */ 3820 struct hb_segment_properties_t 3821 { 3822 /** 3823 * the #hb_direction_t of the buffer, see hb_buffer_set_direction(). 3824 */ 3825 hb_direction_t direction; 3826 /** 3827 * the #hb_script_t of the buffer, see hb_buffer_set_script(). 3828 */ 3829 hb_script_t script; 3830 /** 3831 * the #hb_language_t of the buffer, see hb_buffer_set_language(). 3832 */ 3833 hb_language_t language; 3834 void* reserved1; 3835 void* reserved2; 3836 } 3837 3838 /** 3839 * Data type for holding a set of integers. #hb_set_t's are 3840 * used to gather and contain glyph IDs, Unicode code 3841 * points, and various other collections of discrete 3842 * values. 3843 */ 3844 struct hb_set_t; 3845 3846 /** 3847 * Data type for holding a shaping plan. 3848 * 3849 * Shape plans contain information about how HarfBuzz will shape a 3850 * particular text segment, based on the segment's properties and the 3851 * capabilities in the font face in use. 3852 * 3853 * Shape plans can be queried about how shaping will perform, given a set 3854 * of specific input parameters (script, language, direction, features, 3855 * etc.). 3856 */ 3857 struct hb_shape_plan_t; 3858 3859 /** 3860 * Data type containing a set of virtual methods used for 3861 * accessing various Unicode character properties. 3862 * 3863 * HarfBuzz provides a default function for each of the 3864 * methods in #hb_unicode_funcs_t. Client programs can implement 3865 * their own replacements for the individual Unicode functions, as 3866 * needed, and replace the default by calling the setter for a 3867 * method. 3868 */ 3869 struct hb_unicode_funcs_t; 3870 3871 /** 3872 * Data structure for holding user-data keys. 3873 */ 3874 struct hb_user_data_key_t 3875 { 3876 char unused; 3877 } 3878 3879 struct hb_var_int_t 3880 { 3881 union 3882 { 3883 uint u32; 3884 int i32; 3885 ushort[2] u16; 3886 short[2] i16; 3887 ubyte[4] u8; 3888 byte[4] i8; 3889 } 3890 } 3891 3892 struct hb_var_num_t 3893 { 3894 union 3895 { 3896 float f; 3897 uint u32; 3898 int i32; 3899 ushort[2] u16; 3900 short[2] i16; 3901 ubyte[4] u8; 3902 byte[4] i8; 3903 } 3904 } 3905 3906 struct hb_variation_t 3907 { 3908 /** 3909 * The #hb_tag_t tag of the variation-axis name 3910 */ 3911 hb_tag_t tag; 3912 /** 3913 * The value of the variation axis 3914 */ 3915 float value; 3916 } 3917 3918 /** 3919 * A callback method for #hb_buffer_t. The method gets called with the 3920 * #hb_buffer_t it was set on, the #hb_font_t the buffer is shaped with and a 3921 * message describing what step of the shaping process will be performed. 3922 * Returning %false from this method will skip this shaping step and move to 3923 * the next one. 3924 * 3925 * Params: 3926 * buffer = An #hb_buffer_t to work upon 3927 * font = The #hb_font_t the @buffer is shaped with 3928 * message = %NULL-terminated message passed to the function 3929 * userData = User data pointer passed by the caller 3930 * 3931 * Returns: %true to perform the shaping step, %false to skip it. 3932 * 3933 * Since: 1.1.3 3934 */ 3935 public alias extern(C) hb_bool_t function(hb_buffer_t* buffer, hb_font_t* font, const(char)* message, void* userData) hb_buffer_message_func_t; 3936 3937 /** 3938 * A virtual method for destroy user-data callbacks. 3939 * 3940 * Params: 3941 * userData = the data to be destroyed 3942 */ 3943 public alias extern(C) void function(void* userData) hb_destroy_func_t; 3944 3945 /** 3946 * A virtual method for the #hb_draw_funcs_t to perform a "close-path" draw 3947 * operation. 3948 * 3949 * Params: 3950 * dfuncs = draw functions object 3951 * drawData = The data accompanying the draw functions 3952 * st = current draw state 3953 * userData = User data pointer passed by the caller 3954 * 3955 * Since: 4.0.0 3956 */ 3957 public alias extern(C) void function(hb_draw_funcs_t* dfuncs, void* drawData, hb_draw_state_t* st, void* userData) hb_draw_close_path_func_t; 3958 3959 /** 3960 * A virtual method for the #hb_draw_funcs_t to perform a "cubic-to" draw 3961 * operation. 3962 * 3963 * Params: 3964 * dfuncs = draw functions object 3965 * drawData = The data accompanying the draw functions 3966 * st = current draw state 3967 * control1X = X component of first control point 3968 * control1Y = Y component of first control point 3969 * control2X = X component of second control point 3970 * control2Y = Y component of second control point 3971 * toX = X component of target point 3972 * toY = Y component of target point 3973 * userData = User data pointer passed by the caller 3974 * 3975 * Since: 4.0.0 3976 */ 3977 public alias extern(C) void function(hb_draw_funcs_t* dfuncs, void* drawData, hb_draw_state_t* st, float control1X, float control1Y, float control2X, float control2Y, float toX, float toY, void* userData) hb_draw_cubic_to_func_t; 3978 3979 /** 3980 * A virtual method for the #hb_draw_funcs_t to perform a "line-to" draw 3981 * operation. 3982 * 3983 * Params: 3984 * dfuncs = draw functions object 3985 * drawData = The data accompanying the draw functions 3986 * st = current draw state 3987 * toX = X component of target point 3988 * toY = Y component of target point 3989 * userData = User data pointer passed by the caller 3990 * 3991 * Since: 4.0.0 3992 */ 3993 public alias extern(C) void function(hb_draw_funcs_t* dfuncs, void* drawData, hb_draw_state_t* st, float toX, float toY, void* userData) hb_draw_line_to_func_t; 3994 3995 /** 3996 * A virtual method for the #hb_draw_funcs_t to perform a "move-to" draw 3997 * operation. 3998 * 3999 * Params: 4000 * dfuncs = draw functions object 4001 * drawData = The data accompanying the draw functions 4002 * st = current draw state 4003 * toX = X component of target point 4004 * toY = Y component of target point 4005 * userData = User data pointer passed by the caller 4006 * 4007 * Since: 4.0.0 4008 */ 4009 public alias extern(C) void function(hb_draw_funcs_t* dfuncs, void* drawData, hb_draw_state_t* st, float toX, float toY, void* userData) hb_draw_move_to_func_t; 4010 4011 /** 4012 * A virtual method for the #hb_draw_funcs_t to perform a "quadratic-to" draw 4013 * operation. 4014 * 4015 * Params: 4016 * dfuncs = draw functions object 4017 * drawData = The data accompanying the draw functions 4018 * st = current draw state 4019 * controlX = X component of control point 4020 * controlY = Y component of control point 4021 * toX = X component of target point 4022 * toY = Y component of target point 4023 * userData = User data pointer passed by the caller 4024 * 4025 * Since: 4.0.0 4026 */ 4027 public alias extern(C) void function(hb_draw_funcs_t* dfuncs, void* drawData, hb_draw_state_t* st, float controlX, float controlY, float toX, float toY, void* userData) hb_draw_quadratic_to_func_t; 4028 4029 /** 4030 * This method should retrieve the extents for a font. 4031 * 4032 * Params: 4033 * font = #hb_font_t to work upon 4034 * fontData = @font user data pointer 4035 * extents = The font extents retrieved 4036 * userData = User data pointer passed by the caller 4037 */ 4038 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_font_extents_t* extents, void* userData) hb_font_get_font_extents_func_t; 4039 4040 /** 4041 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4042 * 4043 * This method should retrieve the advance for a specified glyph. The 4044 * method must return an #hb_position_t. 4045 * 4046 * Params: 4047 * font = #hb_font_t to work upon 4048 * fontData = @font user data pointer 4049 * glyph = The glyph ID to query 4050 * userData = User data pointer passed by the caller 4051 * 4052 * Returns: The advance of @glyph within @font 4053 */ 4054 public alias extern(C) hb_position_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, void* userData) hb_font_get_glyph_advance_func_t; 4055 4056 /** 4057 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4058 * 4059 * This method should retrieve the advances for a sequence of glyphs. 4060 * 4061 * Params: 4062 * font = #hb_font_t to work upon 4063 * fontData = @font user data pointer 4064 * count = The number of glyph IDs in the sequence queried 4065 * firstGlyph = The first glyph ID to query 4066 * glyphStride = The stride between successive glyph IDs 4067 * firstAdvance = The first advance retrieved 4068 * advanceStride = The stride between successive advances 4069 * userData = User data pointer passed by the caller 4070 */ 4071 public alias extern(C) void function(hb_font_t* font, void* fontData, uint count, hb_codepoint_t* firstGlyph, uint glyphStride, hb_position_t* firstAdvance, uint advanceStride, void* userData) hb_font_get_glyph_advances_func_t; 4072 4073 /** 4074 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4075 * 4076 * This method should retrieve the (X,Y) coordinates (in font units) for a 4077 * specified contour point in a glyph. Each coordinate must be returned as 4078 * an #hb_position_t output parameter. 4079 * 4080 * Params: 4081 * font = #hb_font_t to work upon 4082 * fontData = @font user data pointer 4083 * glyph = The glyph ID to query 4084 * pointIndex = The contour-point index to query 4085 * x = The X value retrieved for the contour point 4086 * y = The Y value retrieved for the contour point 4087 * userData = User data pointer passed by the caller 4088 * 4089 * Returns: %true if data found, %false otherwise 4090 */ 4091 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, uint pointIndex, hb_position_t* x, hb_position_t* y, void* userData) hb_font_get_glyph_contour_point_func_t; 4092 4093 /** 4094 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4095 * 4096 * This method should retrieve the extents for a specified glyph. Extents must be 4097 * returned in an #hb_glyph_extents output parameter. 4098 * 4099 * Params: 4100 * font = #hb_font_t to work upon 4101 * fontData = @font user data pointer 4102 * glyph = The glyph ID to query 4103 * extents = The #hb_glyph_extents_t retrieved 4104 * userData = User data pointer passed by the caller 4105 * 4106 * Returns: %true if data found, %false otherwise 4107 */ 4108 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, hb_glyph_extents_t* extents, void* userData) hb_font_get_glyph_extents_func_t; 4109 4110 /** 4111 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4112 * 4113 * This method should retrieve the glyph ID that corresponds to a glyph-name 4114 * string. 4115 * 4116 * Params: 4117 * font = #hb_font_t to work upon 4118 * fontData = @font user data pointer 4119 * name = The name string to query 4120 * len = The length of the name queried 4121 * glyph = The glyph ID retrieved 4122 * userData = User data pointer passed by the caller 4123 * 4124 * Returns: %true if data found, %false otherwise 4125 */ 4126 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, char* name, int len, hb_codepoint_t* glyph, void* userData) hb_font_get_glyph_from_name_func_t; 4127 4128 /** 4129 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4130 * 4131 * This method should retrieve the glyph ID for a specified Unicode code point 4132 * font, with an optional variation selector. 4133 * 4134 * Params: 4135 * font = #hb_font_t to work upon 4136 * fontData = @font user data pointer 4137 * unicode = The Unicode code point to query 4138 * variationSelector = The variation-selector code point to query 4139 * glyph = The glyph ID retrieved 4140 * userData = User data pointer passed by the caller 4141 * 4142 * Returns: %true if data found, %false otherwise 4143 */ 4144 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t unicode, hb_codepoint_t variationSelector, hb_codepoint_t* glyph, void* userData) hb_font_get_glyph_func_t; 4145 4146 /** 4147 * This method should retrieve the kerning-adjustment value for a glyph-pair in 4148 * the specified font, for horizontal text segments. 4149 * 4150 * Params: 4151 * font = #hb_font_t to work upon 4152 * fontData = @font user data pointer 4153 * firstGlyph = The glyph ID of the first glyph in the glyph pair 4154 * secondGlyph = The glyph ID of the second glyph in the glyph pair 4155 * userData = User data pointer passed by the caller 4156 */ 4157 public alias extern(C) hb_position_t function(hb_font_t* font, void* fontData, hb_codepoint_t firstGlyph, hb_codepoint_t secondGlyph, void* userData) hb_font_get_glyph_kerning_func_t; 4158 4159 /** 4160 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4161 * 4162 * This method should retrieve the glyph name that corresponds to a 4163 * glyph ID. The name should be returned in a string output parameter. 4164 * 4165 * Params: 4166 * font = #hb_font_t to work upon 4167 * fontData = @font user data pointer 4168 * glyph = The glyph ID to query 4169 * name = Name string retrieved for the glyph ID 4170 * size = Length of the glyph-name string retrieved 4171 * userData = User data pointer passed by the caller 4172 * 4173 * Returns: %true if data found, %false otherwise 4174 */ 4175 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, char* name, uint size, void* userData) hb_font_get_glyph_name_func_t; 4176 4177 /** 4178 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4179 * 4180 * This method should retrieve the (X,Y) coordinates (in font units) of the 4181 * origin for a glyph. Each coordinate must be returned in an #hb_position_t 4182 * output parameter. 4183 * 4184 * Params: 4185 * font = #hb_font_t to work upon 4186 * fontData = @font user data pointer 4187 * glyph = The glyph ID to query 4188 * x = The X coordinate of the origin 4189 * y = The Y coordinate of the origin 4190 * userData = User data pointer passed by the caller 4191 * 4192 * Returns: %true if data found, %false otherwise 4193 */ 4194 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, hb_position_t* x, hb_position_t* y, void* userData) hb_font_get_glyph_origin_func_t; 4195 4196 /** 4197 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4198 * 4199 * Params: 4200 * font = #hb_font_t to work upon 4201 * fontData = @font user data pointer 4202 * glyph = The glyph ID to query 4203 * drawFuncs = The draw functions to send the shape data to 4204 * drawData = The data accompanying the draw functions 4205 * userData = User data pointer passed by the caller 4206 * 4207 * Since: 4.0.0 4208 */ 4209 public alias extern(C) void function(hb_font_t* font, void* fontData, hb_codepoint_t glyph, hb_draw_funcs_t* drawFuncs, void* drawData, void* userData) hb_font_get_glyph_shape_func_t; 4210 4211 /** 4212 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4213 * 4214 * This method should retrieve the nominal glyph ID for a specified Unicode code 4215 * point. Glyph IDs must be returned in a #hb_codepoint_t output parameter. 4216 * 4217 * Params: 4218 * font = #hb_font_t to work upon 4219 * fontData = @font user data pointer 4220 * unicode = The Unicode code point to query 4221 * glyph = The glyph ID retrieved 4222 * userData = User data pointer passed by the caller 4223 * 4224 * Returns: %true if data found, %false otherwise 4225 */ 4226 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t unicode, hb_codepoint_t* glyph, void* userData) hb_font_get_nominal_glyph_func_t; 4227 4228 /** 4229 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4230 * 4231 * This method should retrieve the nominal glyph IDs for a sequence of 4232 * Unicode code points. Glyph IDs must be returned in a #hb_codepoint_t 4233 * output parameter. 4234 * 4235 * Params: 4236 * font = #hb_font_t to work upon 4237 * fontData = @font user data pointer 4238 * count = number of code points to query 4239 * firstUnicode = The first Unicode code point to query 4240 * unicodeStride = The stride between successive code points 4241 * firstGlyph = The first glyph ID retrieved 4242 * glyphStride = The stride between successive glyph IDs 4243 * userData = User data pointer passed by the caller 4244 * 4245 * Returns: the number of code points processed 4246 */ 4247 public alias extern(C) uint function(hb_font_t* font, void* fontData, uint count, hb_codepoint_t* firstUnicode, uint unicodeStride, hb_codepoint_t* firstGlyph, uint glyphStride, void* userData) hb_font_get_nominal_glyphs_func_t; 4248 4249 /** 4250 * A virtual method for the #hb_font_funcs_t of an #hb_font_t object. 4251 * 4252 * This method should retrieve the glyph ID for a specified Unicode code point 4253 * followed by a specified Variation Selector code point. Glyph IDs must be 4254 * returned in a #hb_codepoint_t output parameter. 4255 * 4256 * Params: 4257 * font = #hb_font_t to work upon 4258 * fontData = @font user data pointer 4259 * unicode = The Unicode code point to query 4260 * variationSelector = The variation-selector code point to query 4261 * glyph = The glyph ID retrieved 4262 * userData = User data pointer passed by the caller 4263 * 4264 * Returns: %true if data found, %false otherwise 4265 */ 4266 public alias extern(C) hb_bool_t function(hb_font_t* font, void* fontData, hb_codepoint_t unicode, hb_codepoint_t variationSelector, hb_codepoint_t* glyph, void* userData) hb_font_get_variation_glyph_func_t; 4267 4268 /** 4269 * Callback function for hb_face_create_for_tables(). 4270 * 4271 * Params: 4272 * face = an #hb_face_t to reference table for 4273 * tag = the tag of the table to reference 4274 * userData = User data pointer passed by the caller 4275 * 4276 * Returns: A pointer to the @tag table within @face 4277 * 4278 * Since: 0.9.2 4279 */ 4280 public alias extern(C) hb_blob_t* function(hb_face_t* face, hb_tag_t tag, void* userData) hb_reference_table_func_t; 4281 4282 /** 4283 * A virtual method for the #hb_unicode_funcs_t structure. 4284 * 4285 * This method should retrieve the Canonical Combining Class (ccc) 4286 * property for a specified Unicode code point. 4287 * 4288 * Params: 4289 * ufuncs = A Unicode-functions structure 4290 * unicode = The code point to query 4291 * userData = User data pointer passed by the caller 4292 * 4293 * Returns: The #hb_unicode_combining_class_t of @unicode 4294 */ 4295 public alias extern(C) hb_unicode_combining_class_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_combining_class_func_t; 4296 4297 /** 4298 * A virtual method for the #hb_unicode_funcs_t structure. 4299 * 4300 * This method should compose a sequence of two input Unicode code 4301 * points by canonical equivalence, returning the composed code 4302 * point in a #hb_codepoint_t output parameter (if successful). 4303 * The method must return an #hb_bool_t indicating the success 4304 * of the composition. 4305 * 4306 * Params: 4307 * ufuncs = A Unicode-functions structure 4308 * a = The first code point to compose 4309 * b = The second code point to compose 4310 * ab = The composed code point 4311 * userData = user data pointer passed by the caller 4312 * 4313 * Returns: %true is @a,@b composed, %false otherwise 4314 */ 4315 public alias extern(C) hb_bool_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t* ab, void* userData) hb_unicode_compose_func_t; 4316 4317 /** 4318 * Fully decompose @u to its Unicode compatibility decomposition. The codepoints of the decomposition will be written to @decomposed. 4319 * The complete length of the decomposition will be returned. 4320 * 4321 * If @u has no compatibility decomposition, zero should be returned. 4322 * 4323 * The Unicode standard guarantees that a buffer of length #HB_UNICODE_MAX_DECOMPOSITION_LEN codepoints will always be sufficient for any 4324 * compatibility decomposition plus an terminating value of 0. Consequently, @decompose must be allocated by the caller to be at least this length. Implementations 4325 * of this function type must ensure that they do not write past the provided array. 4326 * 4327 * Params: 4328 * ufuncs = a Unicode function structure 4329 * u = codepoint to decompose 4330 * decomposed = address of codepoint array (of length #HB_UNICODE_MAX_DECOMPOSITION_LEN) to write decomposition into 4331 * userData = user data pointer as passed to hb_unicode_funcs_set_decompose_compatibility_func() 4332 * 4333 * Returns: number of codepoints in the full compatibility decomposition of @u, or 0 if no decomposition available. 4334 */ 4335 public alias extern(C) uint function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t u, hb_codepoint_t* decomposed, void* userData) hb_unicode_decompose_compatibility_func_t; 4336 4337 /** 4338 * A virtual method for the #hb_unicode_funcs_t structure. 4339 * 4340 * This method should decompose an input Unicode code point, 4341 * returning the two decomposed code points in #hb_codepoint_t 4342 * output parameters (if successful). The method must return an 4343 * #hb_bool_t indicating the success of the composition. 4344 * 4345 * Params: 4346 * ufuncs = A Unicode-functions structure 4347 * ab = The code point to decompose 4348 * a = The first decomposed code point 4349 * b = The second decomposed code point 4350 * userData = user data pointer passed by the caller 4351 * 4352 * Returns: %true if @ab decomposed, %false otherwise 4353 */ 4354 public alias extern(C) hb_bool_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t ab, hb_codepoint_t* a, hb_codepoint_t* b, void* userData) hb_unicode_decompose_func_t; 4355 4356 /** 4357 * A virtual method for the #hb_unicode_funcs_t structure. 4358 * 4359 * Params: 4360 * ufuncs = A Unicode-functions structure 4361 * unicode = The code point to query 4362 * userData = User data pointer passed by the caller 4363 */ 4364 public alias extern(C) uint function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_eastasian_width_func_t; 4365 4366 /** 4367 * A virtual method for the #hb_unicode_funcs_t structure. 4368 * 4369 * This method should retrieve the General Category property for 4370 * a specified Unicode code point. 4371 * 4372 * Params: 4373 * ufuncs = A Unicode-functions structure 4374 * unicode = The code point to query 4375 * userData = User data pointer passed by the caller 4376 * 4377 * Returns: The #hb_unicode_general_category_t of @unicode 4378 */ 4379 public alias extern(C) hb_unicode_general_category_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_general_category_func_t; 4380 4381 /** 4382 * A virtual method for the #hb_unicode_funcs_t structure. 4383 * 4384 * This method should retrieve the Bi-Directional Mirroring Glyph 4385 * code point for a specified Unicode code point. 4386 * 4387 * <note>Note: If a code point does not have a specified 4388 * Bi-Directional Mirroring Glyph defined, the method should 4389 * return the original code point.</note> 4390 * 4391 * Params: 4392 * ufuncs = A Unicode-functions structure 4393 * unicode = The code point to query 4394 * userData = User data pointer passed by the caller 4395 * 4396 * Returns: The #hb_codepoint_t of the Mirroring Glyph for @unicode 4397 */ 4398 public alias extern(C) hb_codepoint_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_mirroring_func_t; 4399 4400 /** 4401 * A virtual method for the #hb_unicode_funcs_t structure. 4402 * 4403 * This method should retrieve the Script property for a 4404 * specified Unicode code point. 4405 * 4406 * Params: 4407 * ufuncs = A Unicode-functions structure 4408 * unicode = The code point to query 4409 * userData = User data pointer passed by the caller 4410 * 4411 * Returns: The #hb_script_t of @unicode 4412 */ 4413 public alias extern(C) hb_script_t function(hb_unicode_funcs_t* ufuncs, hb_codepoint_t unicode, void* userData) hb_unicode_script_func_t; 4414 4415 /** 4416 * Used when getting or setting AAT feature selectors. Indicates that 4417 * there is no selector index corresponding to the selector of interest. 4418 */ 4419 enum AAT_LAYOUT_NO_SELECTOR_INDEX = 65535; 4420 alias HB_AAT_LAYOUT_NO_SELECTOR_INDEX = AAT_LAYOUT_NO_SELECTOR_INDEX; 4421 4422 /** 4423 * The default code point for replacing invalid characters in a given encoding. 4424 * Set to U+FFFD REPLACEMENT CHARACTER. 4425 */ 4426 enum BUFFER_REPLACEMENT_CODEPOINT_DEFAULT = 65533; 4427 alias HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT = BUFFER_REPLACEMENT_CODEPOINT_DEFAULT; 4428 4429 /** 4430 * Special setting for #hb_feature_t.start to apply the feature from the start 4431 * of the buffer. 4432 */ 4433 enum FEATURE_GLOBAL_START = 0; 4434 alias HB_FEATURE_GLOBAL_START = FEATURE_GLOBAL_START; 4435 4436 /** 4437 * An unset #hb_language_t. 4438 */ 4439 enum LANGUAGE_INVALID = 0; 4440 alias HB_LANGUAGE_INVALID = LANGUAGE_INVALID; 4441 4442 /** 4443 * Unset #hb_map_t value. 4444 */ 4445 enum MAP_VALUE_INVALID = 4294967295; 4446 alias HB_MAP_VALUE_INVALID = MAP_VALUE_INVALID; 4447 4448 /** 4449 * Special value for language index indicating default or unsupported language. 4450 */ 4451 enum OT_LAYOUT_DEFAULT_LANGUAGE_INDEX = 65535; 4452 alias HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX = OT_LAYOUT_DEFAULT_LANGUAGE_INDEX; 4453 4454 /** 4455 * Special value for feature index indicating unsupported feature. 4456 */ 4457 enum OT_LAYOUT_NO_FEATURE_INDEX = 65535; 4458 alias HB_OT_LAYOUT_NO_FEATURE_INDEX = OT_LAYOUT_NO_FEATURE_INDEX; 4459 4460 /** 4461 * Special value for script index indicating unsupported script. 4462 */ 4463 enum OT_LAYOUT_NO_SCRIPT_INDEX = 65535; 4464 alias HB_OT_LAYOUT_NO_SCRIPT_INDEX = OT_LAYOUT_NO_SCRIPT_INDEX; 4465 4466 /** 4467 * Special value for variations index indicating unsupported variation. 4468 */ 4469 enum OT_LAYOUT_NO_VARIATIONS_INDEX = 4294967295; 4470 alias HB_OT_LAYOUT_NO_VARIATIONS_INDEX = OT_LAYOUT_NO_VARIATIONS_INDEX; 4471 4472 /** 4473 * Maximum number of OpenType tags that can correspond to a give #hb_language_t. 4474 */ 4475 enum OT_MAX_TAGS_PER_LANGUAGE = 3; 4476 alias HB_OT_MAX_TAGS_PER_LANGUAGE = OT_MAX_TAGS_PER_LANGUAGE; 4477 4478 /** 4479 * Maximum number of OpenType tags that can correspond to a give #hb_script_t. 4480 */ 4481 enum OT_MAX_TAGS_PER_SCRIPT = 3; 4482 alias HB_OT_MAX_TAGS_PER_SCRIPT = OT_MAX_TAGS_PER_SCRIPT; 4483 4484 /** 4485 * Do not use. 4486 */ 4487 enum OT_VAR_NO_AXIS_INDEX = 4294967295; 4488 alias HB_OT_VAR_NO_AXIS_INDEX = OT_VAR_NO_AXIS_INDEX; 4489 4490 /** 4491 * Unset #hb_set_t value. 4492 */ 4493 enum SET_VALUE_INVALID = 4294967295; 4494 alias HB_SET_VALUE_INVALID = SET_VALUE_INVALID; 4495 4496 /** 4497 * Maximum valid Unicode code point. 4498 */ 4499 enum UNICODE_MAX = 1114111; 4500 alias HB_UNICODE_MAX = UNICODE_MAX; 4501 4502 /** 4503 * See Unicode 6.1 for details on the maximum decomposition length. 4504 */ 4505 enum UNICODE_MAX_DECOMPOSITION_LEN = 19; 4506 alias HB_UNICODE_MAX_DECOMPOSITION_LEN = UNICODE_MAX_DECOMPOSITION_LEN; 4507 4508 enum VERSION_MAJOR = 4; 4509 alias HB_VERSION_MAJOR = VERSION_MAJOR; 4510 4511 enum VERSION_MICRO = 0; 4512 alias HB_VERSION_MICRO = VERSION_MICRO; 4513 4514 enum VERSION_MINOR = 3; 4515 alias HB_VERSION_MINOR = VERSION_MINOR; 4516 4517 enum VERSION_STRING = "4.3.0"; 4518 alias HB_VERSION_STRING = VERSION_STRING;